<?php

namespace App\Modules\Admin\Authentication;

use App\Models\AdminUser;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

class LoginByPassword
{
    public function login($payload)
    {
        $emailAddress = $payload->email_address;
        $password = $payload->password;

        $rules = array(
            'email_address' => 'required|max:255',
            'password' => 'required|max:255',
        );

        $error = Validator::make($payload->all(), $rules);

        if ($error->fails()) {
            return response()->json(['errors' => $error->errors()->all()]);
        }

        $user = AdminUser::where('email_address', $emailAddress)->first();

        if (!$user || !Hash::check($password, $user->password)) {
            return response()->json([
                'message' => ['These credentials do not match our records.'],
            ], 201);
        } else if ($user->is_active == 'false') {
            return response()->json([
                'message' => ['Your account was disabled. Please contact administator.'],
            ], 201);
        }

        $token = $user->createToken('access_token')->plainTextToken;
        $response = [
            'token' => $token,
            'refresh_token' => $token,
        ];

        return response($response, 201);
    }
}
