source: app/Models/User.php@ 582789f

develop
Last change on this file since 582789f was 7304c7f, checked in by beratkjufliju <kufliju@…>, 3 years ago

added user authentication, create & forgot password methods and blades

  • Property mode set to 100644
File size: 3.2 KB
Line 
1<?php
2
3namespace App\Models;
4
5use Illuminate\Support\Str;
6use Illuminate\Notifications\Notifiable;
7use Illuminate\Foundation\Auth\User as Authenticatable;
8
9class User extends Authenticatable
10{
11 use Notifiable;
12
13 protected $table = "users";
14
15 /**
16 * The attributes that are mass assignable.
17 *
18 * @var array
19 */
20 protected $fillable = [
21 "name",
22 "surname",
23 "username",
24 "password",
25 "email",
26 "country_code",
27 "mobile_number",
28 "role_id"
29 ];
30
31 /**
32 * The attributes that should be hidden for arrays.
33 *
34 * @var array
35 */
36 protected $hidden = [
37 "password",
38 "remember_token",
39 "is_active"
40 ];
41
42 /**
43 * The attributes that should be cast to native types.
44 *
45 * @var array
46 */
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 }
142}
Note: See TracBrowser for help on using the repository browser.