AuthController.php 3.51 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Facades\JWTFactory;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Tymon\JWTAuth\PayloadFactory;
use Tymon\JWTAuth\JWTManager as JWT;

class AuthController extends Controller
{
    public function register(Request $request)
    {
Kittisak Maneewong's avatar
Kittisak Maneewong committed
21 22
        if ($request->json()->get('role') == 1) {
            $validator = Validator::make($request->json()->all() , [
Kittisak Maneewong's avatar
Kittisak Maneewong committed
23 24
                'first_name' => 'required|string|max:255',
                'last_name' => 'required|string|max:255',
Kittisak Maneewong's avatar
Kittisak Maneewong committed
25 26 27 28 29 30 31 32 33
                'email' => 'required|string|email|max:255|unique:users,email_users',
                'password' => 'required|string|min:8|confirmed',
            ]);
    
            if($validator->fails()) {
                return response()->json($validator->errors()->toJson(), 400);
            }
    
            $user = User::create([
Kittisak Maneewong's avatar
Kittisak Maneewong committed
34
                'name' => $request->json()->get('first_name')." ".$request->json()->get('last_name'),
Kittisak Maneewong's avatar
Kittisak Maneewong committed
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
                'password' => Hash::make($request->json()->get('password')),
                'email_users' => $request->json()->get('email'),
            ]);
        } else {
            $validator = Validator::make($request->json()->all() , [
                'company_name' => 'required|string|max:255',
                'username' => 'required|string|max:255|unique:users',
                'email' => 'required|string|email|max:255|unique:users,email_employers',
                'password' => 'required|string|min:8|confirmed',
                'tel' => 'required|string|max:255',
            ]);

            if($validator->fails()) {
                return response()->json($validator->errors()->toJson(), 400);
            }
50

Kittisak Maneewong's avatar
Kittisak Maneewong committed
51 52 53 54 55 56 57 58 59
            $user = User::create([
                'company_name' => $request->json()->get('company_name'),
                'password' => Hash::make($request->json()->get('password')),
                'username' => $request->json()->get('username'),
                'tel' => $request->json()->get('tel'),
                'role' => 2,
                'email_employers' => $request->json()->get('email'),
            ]);
        }
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

        $token = JWTAuth::fromUser($user);

        return response()->json(compact('user', 'token'), 201);
    }

    public function login(Request $request)
    {
        $credentials = $request->json()->all();

        try {
            if(! $token = JWTAuth::attempt($credentials)) {
                return response()->json(['error' => 'invalid_credentials'], 400);
            }
        } catch(JWTException $e) {
            return response()->json(['error' => 'could_not_create_token', 500]);
        }

        return response()->json(compact('token'));
    }

    public function getAuthenticatedUser()
    {
        try {
Kittisak Maneewong's avatar
Kittisak Maneewong committed
84
            if(! $user = JWTAuth::parseToken()->authenticate()) {
85 86 87 88 89 90 91 92 93 94 95 96 97
                return response()->json(['user_not_found'], 404);
            }
        } catch(Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
            return response()->json(['token_expired'], $e->getStatusCode());
        } catch(Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
            return response()->json(['token_invalid', $e->getStatusCode()]);
        } catch(Tymon\JWTAuth\Exceptions\JWTException $e) {
            return response()->json(['token_absent'], $e->getStatusCode());
        }

        return response()->json(compact('user'));
    }
}