Changeset 7304c7f for app/Models/User.php
- Timestamp:
- 09/27/21 23:25:43 (3 years ago)
- Branches:
- develop, master
- Children:
- 582789f
- Parents:
- 2fc88ec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
app/Models/User.php
r2fc88ec r7304c7f 3 3 namespace App\Models; 4 4 5 use Illuminate\ Contracts\Auth\MustVerifyEmail;6 use Illuminate\ Database\Eloquent\Factories\HasFactory;5 use Illuminate\Support\Str; 6 use Illuminate\Notifications\Notifiable; 7 7 use Illuminate\Foundation\Auth\User as Authenticatable; 8 use Illuminate\Notifications\Notifiable;9 use Laravel\Sanctum\HasApiTokens;10 8 11 9 class User extends Authenticatable 12 10 { 13 use HasApiTokens, HasFactory, Notifiable; 11 use Notifiable; 12 13 protected $table = "users"; 14 14 15 15 /** 16 16 * The attributes that are mass assignable. 17 17 * 18 * @var string[]18 * @var array 19 19 */ 20 20 protected $fillable = [ 21 'name', 22 'email', 23 'password', 21 "name", 22 "surname", 23 "username", 24 "password", 25 "email", 26 "country_code", 27 "mobile_number", 28 "role_id" 24 29 ]; 25 30 26 31 /** 27 * The attributes that should be hidden for serialization.32 * The attributes that should be hidden for arrays. 28 33 * 29 34 * @var array 30 35 */ 31 36 protected $hidden = [ 32 'password', 33 'remember_token', 37 "password", 38 "remember_token", 39 "is_active" 34 40 ]; 35 41 36 42 /** 37 * The attributes that should be cast .43 * The attributes that should be cast to native types. 38 44 * 39 45 * @var array 40 46 */ 41 protected $casts = [ 42 'email_verified_at' => 'datetime', 43 ]; 47 protected $casts = []; 48 49 50 public function role() { 51 return $this->belongsTo(Role::class); 52 } 53 54 public function post() { 55 return $this->hasMany(Post::class); 56 } 57 58 public function comments() 59 { 60 return $this->hasManyThrough(Comment::class, Post::class); 61 } 62 63 public function hasPermission($permission, $id = null, $any = false) { 64 65 $userPermissions = null; 66 $flag = null; 67 68 if($id != null) $userPermissions = User::find($id)->role->permission->pluck("name"); 69 else $userPermissions = $this->role->permission->pluck("name"); 70 71 if($any) { 72 foreach($permission as $p) { 73 if($this->hasPermission($p)) { 74 return true; 75 } 76 } 77 return false; 78 } 79 80 if(is_string($permission)) { 81 return $userPermissions->contains($permission); 82 } 83 84 if(is_array($permission)) { 85 foreach($permission as $p) { 86 if($this->hasPermission($p)) { 87 $flag = true; 88 } else { 89 $flag = false; break; 90 } 91 } 92 } 93 94 return $flag; 95 } 96 97 public function hasAllPermissions(array $permissions = array(), $id = null, $any = false) { 98 return $this->hasPermission($permissions, $id, $any); 99 } 100 101 public function hasAnyPermission(array $permissions = array(), $id = null, $any = true) { 102 return $this->hasPermission($permissions, $id, $any); 103 } 104 105 public function hasRole($role) { 106 return $role === $this->role->name; 107 } 108 109 public function isAdmin() { 110 return $this->hasRole("admin"); 111 } 112 113 public function isAdminOrEditor() { 114 return $this->hasRole("admin") || $this->hasRole("editor"); 115 } 116 117 public function getFullName($id = null) { 118 119 if($id != null) { 120 $user = User::find($id); 121 return $user->name . " " . $user->surname; 122 } 123 124 return $this->name . " " . $this->surname; 125 } 126 127 public function getPostsCount($id) { 128 return Post::where("user_id", $id)->count(); 129 } 130 131 public function generateTemporaryPassword($length = 20) { 132 return bcrypt(Str::random($length)); 133 } 134 135 public function generateSecurityCode($min = 10000, $max = 99999) { 136 return rand($min, $max); 137 } 138 139 public function generateVerifyToken($length = 32) { 140 return Str::random($length); 141 } 44 142 }
Note:
See TracChangeset
for help on using the changeset viewer.