Skip to content

Instantly share code, notes, and snippets.

@eskrano
Forked from x22element/AuthController.php
Last active February 27, 2019 16:01
Show Gist options
  • Save eskrano/0a536f299b878c172dc4b395be714c5c to your computer and use it in GitHub Desktop.
Save eskrano/0a536f299b878c172dc4b395be714c5c to your computer and use it in GitHub Desktop.
<?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