芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/www/vendor/laravel/jetstream/src/HasTeams.php
id === $this->currentTeam->id; } /** * Get the current team of the user's context. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function currentTeam() { if (is_null($this->current_team_id) && $this->id) { $this->switchTeam($this->personalTeam()); } return $this->belongsTo(Jetstream::teamModel(), 'current_team_id'); } /** * Switch the user's context to the given team. * * @param mixed $team * @return bool */ public function switchTeam($team) { if (! $this->belongsToTeam($team)) { return false; } $this->forceFill([ 'current_team_id' => $team->id, ])->save(); $this->setRelation('currentTeam', $team); return true; } /** * Get all of the teams the user owns or belongs to. * * @return \Illuminate\Collections\Collection */ public function allTeams() { return $this->ownedTeams->merge($this->teams)->sortBy('name'); } /** * Get all of the teams the user owns. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function ownedTeams() { return $this->hasMany(Jetstream::teamModel()); } /** * Get all of the teams the user belongs to. * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function teams() { return $this->belongsToMany(Jetstream::teamModel(), Jetstream::membershipModel()) ->withPivot('role') ->withTimestamps() ->as('membership'); } /** * Get the user's "personal" team. * * @return \App\Models\Team */ public function personalTeam() { return $this->ownedTeams->where('personal_team', true)->first(); } /** * Determine if the user owns the given team. * * @param mixed $team * @return bool */ public function ownsTeam($team) { return $this->id == $team->{$this->getForeignKey()}; } /** * Determine if the user belongs to the given team. * * @param mixed $team * @return bool */ public function belongsToTeam($team) { return $this->teams->contains(function ($t) use ($team) { return $t->id === $team->id; }) || $this->ownsTeam($team); } /** * Get the role that the user has on the team. * * @param mixed $team * @return \Laravel\Jetstream\Role */ public function teamRole($team) { if ($this->ownsTeam($team)) { return new OwnerRole; } if (! $this->belongsToTeam($team)) { return; } return Jetstream::findRole($team->users->where( 'id', $this->id )->first()->membership->role); } /** * Determine if the user has the given role on the given team. * * @param mixed $team * @param string $role * @return bool */ public function hasTeamRole($team, string $role) { if ($this->ownsTeam($team)) { return true; } return $this->belongsToTeam($team) && optional(Jetstream::findRole($team->users->where( 'id', $this->id )->first()->membership->role))->key === $role; } /** * Get the user's permissions for the given team. * * @param mixed $team * @return array */ public function teamPermissions($team) { if ($this->ownsTeam($team)) { return ['*']; } if (! $this->belongsToTeam($team)) { return []; } return $this->teamRole($team)->permissions; } /** * Determine if the user has the given permission on the given team. * * @param mixed $team * @param string $permission * @return bool */ public function hasTeamPermission($team, string $permission) { if ($this->ownsTeam($team)) { return true; } if (! $this->belongsToTeam($team)) { return false; } if (in_array(HasApiTokens::class, class_uses_recursive($this)) && ! $this->tokenCan($permission) && $this->currentAccessToken() !== null) { return false; } $permissions = $this->teamPermissions($team); return in_array($permission, $permissions) || in_array('*', $permissions) || (Str::endsWith($permission, ':create') && in_array('*:create', $permissions)) || (Str::endsWith($permission, ':update') && in_array('*:update', $permissions)); } }