Created
February 27, 2019 15:56
-
-
Save x22element/9eacd28c6923f58f3349c8ac94c5b91a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers; | |
use App\ReaccessAccount; | |
use App\User; | |
use App\UserInfo; | |
use Illuminate\Http\Request; | |
use Illuminate\Support\Facades\Session; | |
use Validator; | |
class AuthController extends Controller | |
{ | |
public $oUser = null; | |
public function login(Request $request) | |
{ | |
$email = $request->get('email'); | |
$password = $request->get('password'); | |
$result = User::where(['email' => $email, 'confirm' => 1, 'block' => 0])->get(); | |
$oUser = $result->first(); | |
if(!$oUser) | |
{ | |
$this->response('Неверный логин, либо пароль',true); | |
} | |
if($oUser->password != md5($password)) | |
{ | |
$this->response('Неверный логин, либо пароль',true); | |
} | |
$this->oUser = $oUser; | |
$isAuth = $this->authorize(); | |
if(!$isAuth) | |
{ | |
$this->response('Ошибка во время авторизации',true); | |
} | |
$redirect = User\User::getStaticLinkPanel($oUser->role); | |
$this->response('Успех',false, $redirect); | |
} | |
public function register(Request $request) | |
{ | |
$valid = Validator::make($request->toArray(), [ | |
'email' => 'required|email', | |
'phone' => 'required', | |
'password' => 'required|confirmed|min:6', | |
'password_confirmation' => 'required' | |
], $this->getMessages()); | |
if ($validator->fails()) { | |
$aErrors = $this->response($validator->messages()->getMessages(), true); | |
echo json_encode($aErrors); | |
return; | |
} | |
$email = $request->get('email'); | |
$oUserDB = User::where(['email' => $email, 'deleted' => 0])->first(); | |
if($oUserDB) | |
{ | |
$aError = ['success' => false, 'data' => ['email' => 'Такой email уже используется']]; | |
echo json_encode($aError); | |
return; | |
} | |
$oUser = $this->createUser($request->toArray()); | |
if(!$oUser) $this->response('Не удалось сохранить пользователя', true); | |
$bRes = $this->saveUserInfo($request, $oUser->id); | |
if(!$bRes) $this->response('Не удалось сохранить пользователя', true); | |
$sCode = RememberAccountController::createCode($oUser->id); | |
} | |
private function createUser($aData) | |
{ | |
$oUser = new User(); | |
$oUser->fill([ | |
'name' => $aData['name'], | |
'lastname' => $aData['lastname'], | |
'patronymic' => $aData['patronymic'], | |
'email' => $aData['email'], | |
'password' => md5($aData['password']), | |
'phone' => $aData['phone'], | |
'created_at' => date('Y-m-d H:i:s'), | |
'updated_at' => date('Y-m-d H:i:s') | |
]); | |
if(!$oUser->save()) | |
{ | |
return FALSE; | |
} | |
return $oUser; | |
} | |
private function authorize() | |
{ | |
$token = $this->generateToken(); | |
Session::put([ | |
'oUser' => [ | |
'id' => $this->oUser->id, | |
'token' => $token, | |
'isAuth' => true, | |
'role' => $this->oUser->role | |
] | |
]); | |
Session::save(); | |
$this->oUser->remember_token = $token; | |
$this->oUser->save(); | |
return true; | |
} | |
private function generateToken() | |
{ | |
$result = md5($this->oUser->id.time().$this->oUser->email.rand(0,99987)); | |
return $result; | |
} | |
public function logout() | |
{ | |
Session::flush(); | |
Session::regenerate(true); | |
return redirect('/'); | |
} | |
public static function singinToken($sToken) | |
{ | |
$oUser = User::find(\App\Facades\User::getID()); | |
if(count($oUser) == 0) | |
{ | |
return false; | |
} | |
if($oUser->remember_token != $sToken) | |
{ | |
return false; | |
} | |
return true; | |
} | |
public function getUser() | |
{ | |
$oUser = \App\Facades\User::getUser(); | |
if(!$oUser) | |
{ | |
$message = [ | |
'success' => true, | |
'data' => false | |
]; | |
echo json_encode($message); | |
return; | |
} | |
$aData = [ | |
'id' => $oUser->id, | |
'name' => $oUser->name, | |
'lastname' => $oUser->lastname, | |
'patronymic' => $oUser->patronymic, | |
'email' => $oUser->email, | |
'phone' => $oUser->phone, | |
'role' => $oUser->role | |
]; | |
$message = [ | |
'success' => true, | |
'data' => $aData | |
]; | |
echo json_encode($message); | |
return; | |
} | |
public function setPassword(Request $request) | |
{ | |
$pass = $request->get('pass'); | |
if(trim($pass) == '') | |
{ | |
return json_encode(['success' => false, 'message' => 'Заполните все поля!']); | |
} | |
$user_id = \App\Facades\User::getID(); | |
$oUser = User::find($user_id); | |
if(!$oUser) | |
{ | |
return json_encode(['success' => false, 'message' => 'Ошибка']); | |
} | |
if($oUser->password == md5($pass)) | |
{ | |
return json_encode(['success' => false, 'message' => 'Пароли не совпадают!']); | |
} | |
$oUser->password = md5($pass); | |
if($oUser->save()) | |
{ | |
return json_encode(['success' => true, 'message' => 'Пароль изменен!']); | |
} | |
return json_encode(['success' => false, 'message' => 'Произошла ошибка!']); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment