Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created March 22, 2020 06:32
Show Gist options
  • Save parzibyte/724bdab1b34a0580e32d6b5bfdf13a62 to your computer and use it in GitHub Desktop.
Save parzibyte/724bdab1b34a0580e32d6b5bfdf13a62 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
public function signup(Request $request)
{
$request->validate([
'name' => 'required|string',
'email' => 'required|string|email|unique:users',
'password' => 'required|string|confirmed',
]);
$user = new User([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
]);
$user->save();
return response()->json([
'message' => 'Successfully created user!'], 201);
}
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean',
]);
$credentials = request(['email', 'password']);
if (!Auth::attempt($credentials)) {
return response()->json([
'message' => 'Unauthorized'], 401);
}
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me) {
$token->expires_at = Carbon::now()->addWeeks(1);
}
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at)
->toDateTimeString(),
]);
}
public function logout(Request $request)
{
$request->user()->token()->revoke();
return response()->json(['message' =>
'Successfully logged out']);
}
public function user(Request $request)
{
return response()->json($request->user());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment