-
-
Save eskrano/0a536f299b878c172dc4b395be714c5c 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 response($text, $ok = true) | |
{ | |
return response($text, $ok ? 200 : 404); | |
} | |
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