<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; use Xmen\StarterKit\Models\Post; use Xmen\StarterKit\Models\StarterKit; /** * App\Models\User * * @property int $id * @property string $name * @property string $email * @property \Illuminate\Support\Carbon|null $email_verified_at * @property string $password * @property string|null $remember_token * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property string|null $mobile * @property-read \Illuminate\Database\Eloquent\Collection|\Xmen\StarterKit\Models\AdminLog[] $logs * @property-read int|null $logs_count * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications * @property-read int|null $notifications_count * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Permission[] $permissions * @property-read int|null $permissions_count * @property-read \Illuminate\Database\Eloquent\Collection|\Xmen\StarterKit\Models\Post[] $posts * @property-read int|null $posts_count * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Role[] $roles * @property-read int|null $roles_count * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Sanctum\PersonalAccessToken[] $tokens * @property-read int|null $tokens_count * @method static \Database\Factories\UserFactory factory(...$parameters) * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() * @method static \Illuminate\Database\Eloquent\Builder|User permission($permissions) * @method static \Illuminate\Database\Eloquent\Builder|User query() * @method static \Illuminate\Database\Eloquent\Builder|User role($roles, $guard = null) * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereMobile($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Access> $accesses * @property-read int|null $accesses_count * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products * @property-read int|null $products_count * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Access> $accesses * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Access> $accesses * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products * @mixin \Eloquent */ class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable,StarterKit; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function posts(){ return $this->hasMany(Post::class); } public function products(){ return $this->hasMany(Product::class); } public function accesses(){ return $this->hasMany(Access::class); } public function hasAnyAccess($name){ if ($this->hasRole('super-admin')){ return true; } return $this->accesses()->where('route','LIKE','%.'.$name.'.%')->count() > 0; } public function hasAccess($route){ return $this->accesses()->where('route',$route)->count() > 0; } }