Установить Laravel's Auth user

Я использую Laravel's Auth класс для аутентификации пользователей на моем сайте, базовый Auth::attempt(...) вещи.

Недавно появилось новое требование (да, заинтересованные стороны!), И теперь пользователям необходимо создавать новых пользователей (вторичных пользователей). Поскольку вход в систему основных пользователей осуществляется через стороннюю систему, я не могу сохранить вторичных пользователей вместе с основными пользователями (и повторно использовать текущую систему аутентификации).

Я подумал о том, чтобы как-то рассказать Auth класс для входа и принудительно установить пользователя на Auth::user() метод.

Есть ли способ сделать это?

1 ответ

Решение

РЕДАКТИРОВАТЬ

Для этого вы должны использовать в модели вашего вторичного пользователя UserInterface учебный класс

use Illuminate\Auth\UserInterface;

Затем вам нужно реализовать 5 обязательных методов: getAuthIdentifier, getAuthPassword, getRememberToken, setRememberToken а также getRememberTokenName,

С виду config > auth не может быть изменено во время выполнения, вам придется проверить учетные данные пользователя вручную, получить экземпляр и сделать Auth::login($secondaryUser),

<?php

use Illuminate\Auth\UserInterface;

class SecondaryUser extends Eloquent implements UserInterface {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'secondary_users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');

    /**
     * Get the unique identifier for the secondary user.
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Get the password for the secondary user.
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->password;
    }

    /**
     * Get the token value for the "remember me" session.
     *
     * @return string
     */
    public function getRememberToken()
    {
        return $this->remember_token;
    }

    /**
     * Set the token value for the "remember me" session.
     *
     * @param  string  $value
     * @return void
     */
    public function setRememberToken($value)
    {
        $this->remember_token = $value;
    }

    /**
     * Get the column name for the "remember me" token.
     *
     * @return string
     */
    public function getRememberTokenName()
    {
        return 'remember_token';
    }

    public function mainUser()
    {
        return $this->belongsTo('User');
    }

}

ОРИГИНАЛЬНЫЙ ОТВЕТ

Я не уверен, что понял, что вы хотели, но, возможно, это может помочь: http://laravel.com/docs/security

$user = User::find(1);
Auth::login($user);

И если у вас есть 2 user модели, я думаю, это должно работать до тех пор, пока они расширяют основной класс пользователя

Другие вопросы по тегам