Laravel Auth User添加自定义数据

时间:2016-10-24 19:39:44

标签: php laravel laravel-socialite

我们目前正在开发一个使用社交网站与Laravel进行Google登录的应用程序。我们有一个Auth用户,他获得了一个权限号码ex。我们创建了一个函数,它返回一个包含所有二进制数的数组,该权限号被取消。

因为每次加载页面调用此函数可能有点沉重,所以我们考虑在创建Auth :: user()时添加一次。我们考虑在模型中添加自定义构造函数,但我们无法使其工作。

function __construct($attributes = array()) {
  parent::__construct($attributes);
  $this->permissionsArray = PermissionHelper::permissionConverter($this->permissions);
}

但我们无法让它工作,$this在调用此函数时没有值。

TLDR; 在创建Auth用户之后,我想直接调用permissionConverter函数并将数据保存到用户,这样我们就可以更频繁地使用它。有关如何做到这一点的任何建议吗?

编辑:我今天检查了所有答案,其中一个成功,但我认为Laravel将经过身份验证的用户放入了SESSION或其他东西。我发现它没有,并且每次请求都会从数据库中获取所有数据。不幸的是,我们无法做到我们要求的。所以我只需要重构脚本并使其尽可能高效(尽管对于经验不足的程序员来说它的可读性稍差)。

感谢您的帮助:D

1 个答案:

答案 0 :(得分:1)

也许你可以使用这个解决方案? https://stackoverflow.com/a/25949698/7065748

使用

User Eloquent模型上创建一个boot方法
class User extends BaseModel {
  public static function boot() {
    static::creating(function($model) {
      $model->permissionsArray = PermissionHelper::permissionConverter($model->permissions);
    });
    // do the same for update (updating) if necessary
  }
}

你不能使用这种方法吗?

如果是新用户:

$user = new User(); // or User:create(['...']) directly
$user->name = 'toto';
// and all other data

$user = Auth::user();

然后

$user->permissionsArray = PermissionHelper::permissionConverter($user->permissions);
$user->save();