<?php

namespace App\Livewire;

use Illuminate\Support\Facades\Hash;
use DanHarrin\LivewireRateLimiting\WithRateLimiting;
use Livewire\Component;

class ForcePasswordReset extends Component
{
    use WithRateLimiting;
    public string $email;
    public string $password;
    public string $password_confirmation;

    protected $rules = [
        'email' => 'required|email',
        'password' => 'required|min:8',
        'password_confirmation' => 'required|same:password',
    ];
    public function mount()
    {
        $this->email = auth()->user()->email;
    }
    public function render()
    {
        return view('livewire.force-password-reset')->layout('layouts.simple');
    }
    public function submit()
    {
        try {
            $this->rateLimit(10);
            $this->validate();
            $firstLogin = auth()->user()->created_at == auth()->user()->updated_at;
            auth()->user()->forceFill([
                'password' => Hash::make($this->password),
                'force_password_reset' => false,
            ])->save();
            if ($firstLogin) {
                send_internal_notification('First login for ' . auth()->user()->email);
            }
            return redirect()->route('dashboard');
        } catch (\Throwable $e) {
            return handleError($e, $this);
        }
    }
}