Laravel attempt password identification in Oracle database

64 Views Asked by At

I changed Laravel's default authentication table to use the Attempt method in an Oracle database, so far everything is working smoothly, the problem is that I had to set another column (OBSINFO) of the database to be used as a password because the default password column (PASSWORD) has a database encryption method that can only be revealed using the decrypt(password, userbd) function, how can I apply a decrypt to this password before it is compared in laravel?

LoginController

<?php

namespace App\Http\Controllers;

use App\Models\PCContro;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{

    public function login(){

        return view('login');
    }
    /**
     * Handle an authentication attempt.
     */
    public function authenticate(Request $request): RedirectResponse
    {
        $credentials = $request->validate([
            'usuariobd' => ['required'],
            'password' => ['required'],
        ]);

        $credentials['usuariobd'] = strtoupper($credentials['usuariobd']);
        $credentials['password'] = strtoupper($credentials['password']);

        if ( Auth::attempt($credentials)) {
            $request->session()->regenerate();

            /* Verifica se o usuario que esta logado possui permissão na rotina X EX:215 */
            $matricula = User::where('usuariobd',$credentials['usuariobd'])->pluck('matricula')->first();
            $permissao = PCContro::where('codusuario',$matricula)->where('codrotina',215)->where('acesso','S')->first();

            if (!$permissao){
                Auth::logout();
                $request->session()->invalidate();
                $request->session()->regenerateToken();

                return back()->with('error', 'Usuario sem permissão de acesso!');
            }

            return redirect()->intended('/');
        }

        return back()->with('error', 'Usuario ou Senha Incorreta!');
    }

    public function logout(Request $request): RedirectResponse
    {
        Auth::logout();

        $request->session()->invalidate();

        $request->session()->regenerateToken();

        return redirect('/login');
    }
}

User Model

<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    protected $table = 'pcempr';

    protected $primaryKey = 'matricula';

    use HasApiTokens, HasFactory, Notifiable;

    /*Altera o identificador padrão do Laravel e Encrypta a coluna do banco*/
    public function getAuthPassword()
    {
        return bcrypt($this->obsinativo);
    }

}

Oracle password select

0

There are 0 best solutions below