Changeset 7304c7f for app/Models


Ignore:
Timestamp:
09/27/21 23:25:43 (3 years ago)
Author:
beratkjufliju <kufliju@…>
Branches:
develop, master
Children:
582789f
Parents:
2fc88ec
Message:

added user authentication, create & forgot password methods and blades

Location:
app/Models
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • app/Models/User.php

    r2fc88ec r7304c7f  
    33namespace App\Models;
    44
    5 use Illuminate\Contracts\Auth\MustVerifyEmail;
    6 use Illuminate\Database\Eloquent\Factories\HasFactory;
     5use Illuminate\Support\Str;
     6use Illuminate\Notifications\Notifiable;
    77use Illuminate\Foundation\Auth\User as Authenticatable;
    8 use Illuminate\Notifications\Notifiable;
    9 use Laravel\Sanctum\HasApiTokens;
    108
    119class User extends Authenticatable
    1210{
    13     use HasApiTokens, HasFactory, Notifiable;
     11    use Notifiable;
     12
     13    protected $table = "users";
    1414
    1515    /**
    1616     * The attributes that are mass assignable.
    1717     *
    18      * @var string[]
     18     * @var array
    1919     */
    2020    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"
    2429    ];
    2530
    2631    /**
    27      * The attributes that should be hidden for serialization.
     32     * The attributes that should be hidden for arrays.
    2833     *
    2934     * @var array
    3035     */
    3136    protected $hidden = [
    32         'password',
    33         'remember_token',
     37        "password",
     38        "remember_token",
     39        "is_active"
    3440    ];
    3541
    3642    /**
    37      * The attributes that should be cast.
     43     * The attributes that should be cast to native types.
    3844     *
    3945     * @var array
    4046     */
    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    }
    44142}
Note: See TracChangeset for help on using the changeset viewer.