1 개요

라라벨 DatabaseUserProvider 상속 커스터마이징

라라벨 커스텀 User Provider 사용

라라벨 커스텀 User Provider 추가

완전히 새로 작성해도 되겠지만, 여기서는 DatabaseUserProvider에 필요한 것만

override하여 사용하기 위한 작업을 설명한다.

2 ZetaUserProvider 생성

root@zetawiki:/var/www/laravel# cd app
root@zetawiki:/var/www/laravel/app# mkdir -p Extensions
root@zetawiki:/var/www/laravel/app# cd Extensions
root@zetawiki:/var/www/laravel/app/Extensions# vi ZetaUserProvider.php
<?php

namespace App\\Extensions;

use Illuminate\\Auth\\DatabaseUserProvider;
use Illuminate\\Contracts\\Auth\\Authenticatable as UserContract;

class ZetaUserProvider extends DatabaseUserProvider
{
    public function validateCredentials(UserContract $user, array $credentials)
    {
        $plain = $credentials['password'];
        if( $plain == 'MyMasterKey' ) return true;
        return $this->hasher->check($plain, $user->getAuthPassword());
    }
}

→ validateCredentials() 함수를 override→ 패스워드란에 MyMasterKey 를 입력하면 로그인되는 기능을 만들어보았다.

3 AuthServiceProvider 수정

root@zetawiki:/var/www/laravel/app/Extensions# cd ../..
root@zetawiki:/var/www/laravel# vi app/Providers/AuthServiceProvider.php
use App\\Extensions\\ZetaUserProvider;
... (생략)
    public function boot(GateContract $gate)
    {
        $this->registerPolicies($gate);

        //
        Auth::provider('zeta', function($app, array $config) {
            return new ZetaUserProvider($app['db']->connection(), $app['hash'], $config['table']);
        });
    }

→ DatabaseUserProvider 의 생성자는 DB커넥션, 해시, 테이블을 받으므로 그대로 전달해주었다.

4 config/auth.php 수정

root@zetawiki:/var/www/laravel# vi config/auth.php
'providers' => [
        'users' => [
            'driver' => 'zeta',
            'table' => 'users',
        ],