%PDF- %PDF-
Mini Shell

Mini Shell

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

<?php

namespace App\Http\Controllers\Api\v1;


use App\Events\NotificationSentEvent;
use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Users\ChangePasswordRequest;
use App\Http\Requests\Api\v1\Users\ResetPasswordRequest;
use App\Http\Requests\Api\v1\Users\UpdateProfileRequest;
use App\Http\Requests\Api\v1\Users\UploadImageRequest;
use App\Models\BaseModel;
use App\Models\Notification;
use App\Models\ResetPassword;
use App\Models\User;
use App\Transformers\UserDetailsTransformer;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Throwable;

class AuthController extends ApiController
{

    public function check(Request $request)
    {
        $email = $request->get('email');

        $emailCheck = User::query()
                          ->where('email', $email)
                          ->exists();

        return response()->json(['exists' => $emailCheck], 200);
    }

    public function login(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' => trans('auth.account_disabled')], 401);
            }

            $accessToken = $user->createToken('api')->accessToken;
            return response()->json([
                'token' => $accessToken,
            ], 200);
        } else {
            return response()->json(['error' => trans('auth.failed')], 401);
        }
    }

    public function me()
    {
        $user = auth()
            ->guard('api')
            ->user();
        return $this->item($user, new UserDetailsTransformer(true));
    }

    public function updateProfile(UpdateProfileRequest $request)
    {
        try {
            /** @var User $user */
            $user = BaseModel::getLoggedInUser();
            $data = $request->only([
                'name',
                'surname',
                'email',
                'phone',
                'birthday',
            ]);
            $user->updateItem($data);
            return $this->item($user, new UserDetailsTransformer());
        } catch (Throwable $e) {
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function changePassword(ChangePasswordRequest $request)
    {
        $user = BaseModel::getLoggedInUser();
        $user->password = $request->get('password');
        $user->save();
        return $this->item($user, new UserTransformer);
    }

    public function uploadAvatar(UploadImageRequest $request)
    {
        try {
            $user = BaseModel::getLoggedInUser();
            $user->setAvatarBase64($request->get('image'));
            return $this->item($user->fresh(), new UserDetailsTransformer);
        } catch (\Exception $e) {
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function resetPassword(ResetPasswordRequest $request)
    {
        try {
            /** @var User $user */
            $user = ResetPassword::getUserByToken($request->get('token'));
            $user->updatePassword($request->get('password'));
            $accessToken = $user->createToken('api')->accessToken;
            ResetPassword::deleteByToken($request->get('token'));
            return response()->json([
                'token' => $accessToken,
            ], 200);
        } catch (Throwable $e) {
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function performance(Request $request)
    {
        $user = BaseModel::getLoggedInUser();
        return $user->performance($request->get('from'), $request->get('to'));
    }

    public function getMonthData(Request $request)
    {
        $user = BaseModel::getLoggedInUser();
        $month = $request->get('month');
        $year = $request->get('year');
        $start = BaseModel::getStartOfMonth($month, $year);
        $end = BaseModel::getEndOfMonth($month, $year);
        return ['data' => $user->getCalendarData($start, $end)];
    }

    public function test()
    {
        dd('test');
    }

}

Zerion Mini Shell 1.0