X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/3a9caea84609c9cf584ba9c15eed5d2a0db5a6d3..refs/pull/3391/head:/app/Auth/User.php diff --git a/app/Auth/User.php b/app/Auth/User.php index 07232e1cc..4e2183244 100644 --- a/app/Auth/User.php +++ b/app/Auth/User.php @@ -1,6 +1,11 @@ -where('system_name', '=', 'public')->first(); + return static::$defaultUser; } @@ -96,13 +111,15 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon /** * The roles that belong to the user. + * * @return BelongsToMany */ public function roles() { if ($this->id === 0) { - return ; + return; } + return $this->belongsToMany(Role::class); } @@ -127,7 +144,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ public function attachDefaultRole(): void { - $roleId = setting('registration-role'); + $roleId = intval(setting('registration-role')); if ($roleId && $this->roles()->where('id', '=', $roleId)->count() === 0) { $this->roles()->attach($roleId); } @@ -159,7 +176,6 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon ->leftJoin('permission_role', 'ru.role_id', '=', 'permission_role.role_id') ->leftJoin('role_permissions', 'permission_role.permission_id', '=', 'role_permissions.id') ->where('ru.user_id', '=', $this->id) - ->get() ->pluck('name'); return $this->permissions; @@ -192,7 +208,9 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon /** * Check if the user has a social account, * If a driver is passed it checks for that single account type. + * * @param bool|string $socialDriver + * * @return bool */ public function hasSocialAccount($socialDriver = false) @@ -205,7 +223,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon } /** - * Returns a URL to the user's avatar + * Returns a URL to the user's avatar. */ public function getAvatar(int $size = 50): string { @@ -220,6 +238,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon } catch (Exception $err) { $avatar = $default; } + return $avatar; } @@ -239,6 +258,22 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon return $this->hasMany(ApiToken::class); } + /** + * Get the favourite instances for this user. + */ + public function favourites(): HasMany + { + return $this->hasMany(Favourite::class); + } + + /** + * Get the MFA values belonging to this use. + */ + public function mfaValues(): HasMany + { + return $this->hasMany(MfaValue::class); + } + /** * Get the last activity time for this user. */ @@ -258,6 +293,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon public function getEditUrl(string $path = ''): string { $uri = '/settings/users/' . $this->id . '/' . trim($path, '/'); + return url(rtrim($uri, '/')); } @@ -266,7 +302,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ public function getProfileUrl(): string { - return url('/http/source.bookstackapp.com/user/' . $this->id); + return url('/http/source.bookstackapp.com/user/' . $this->slug); } /** @@ -288,7 +324,9 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon /** * Send the password reset notification. - * @param string $token + * + * @param string $token + * * @return void */ public function sendPasswordResetNotification($token) @@ -297,10 +335,20 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon } /** - * @inheritdoc + * {@inheritdoc} */ public function logDescriptor(): string { return "({$this->id}) {$this->name}"; } + + /** + * {@inheritdoc} + */ + public function refreshSlug(): string + { + $this->slug = app(SlugGenerator::class)->generate($this); + + return $this->slug; + } }