Skip to content

Instantly share code, notes, and snippets.

@NazmusShakib
Last active April 1, 2018 10:49
Show Gist options
  • Save NazmusShakib/b0be64aee626efd0e0356fdb154b7e00 to your computer and use it in GitHub Desktop.
Save NazmusShakib/b0be64aee626efd0e0356fdb154b7e00 to your computer and use it in GitHub Desktop.
Register user and generate JWTAuth token for users
<?php
namespace App\Http\Controllers;
use App\Http\Requests\RegisterFormRequest;
use Illuminate\Support\Facades\Auth;
use Tymon\JWTAuth\Facades\JWTAuth;
use Illuminate\Http\Request;
use App\User;
class AuthController extends Controller
{
public function register(RegisterFormRequest $request)
{
$user = new User;
$user->email = $request->email;
$user->name = $request->name;
$user->password = bcrypt($request->password);
$user->save();
return response([
'status' => 'success',
'data' => $user
], 200);
}
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (!$token = JWTAuth::attempt($credentials)) {
return response([
'status' => 'error',
'error' => 'invalid.credentials',
'msg' => 'Invalid Credentials.'
], 400);
}
return response([
'status' => 'success',
'token' => $token
]);
}
public function user(Request $request)
{
$user = User::find(Auth::user()->id);
return response([
'status' => 'success',
'data' => $user
]);
}
/**
* Log out
* Invalidate the token, so user cannot use it anymore
* They have to relogin to get a new token
*
* @param Request $request
*/
public function logout(Request $request) {
$this->validate($request, ['token' => 'required']);
try {
JWTAuth::invalidate($request->input('token'));
return response([
'status' => 'success',
'msg' => 'You have successfully logged out.'
]);
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response([
'status' => 'error',
'msg' => 'Failed to logout, please try again.'
]);
}
}
public function refresh()
{
return response([
'status' => 'success'
]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment