User.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Core\Auth\Classes;
  3. use ORM\Entity as Entity;
  4. use App\Core\Auth\Classes\Group as Group;
  5. use App\Core\Auth\Classes\Permission as Permission;
  6. use ORM\DBInstance;
  7. class User extends Entity{
  8. public $method = 'manual';
  9. public $username = '';
  10. public $name = '';
  11. public $email = '';
  12. public $password = '';
  13. const _tableName = "auth_user";
  14. const _timestamps = true;
  15. const _softdelete = true;
  16. function groups(){
  17. return $this->belongsToMany(Group::class, 'auth_group_user', 'user_id', 'group_id')->get();
  18. }
  19. function specificPermissions(){
  20. return $this->belongsToManyExtended(Permission::class, 'auth_permission_user', 'user_id', 'permission_id');
  21. }
  22. function permissions(){
  23. $permissions = [];
  24. foreach ($this->groups() as $group){
  25. foreach ($group->permissions()->get() as $permission){
  26. $permissions[] = $permission->name;
  27. }
  28. }
  29. foreach ($this->specificPermissions()->get() as $permission){
  30. if($permission->action == 'a'){
  31. $permissions[] = $permission->childElement->name;
  32. }else{
  33. }
  34. }
  35. return $permissions;
  36. }
  37. function groupsoptions(){
  38. $groupList = Group::findAll()->get();
  39. foreach($this->groups() as $group){
  40. foreach($groupList as $key => $list){
  41. if($group->id == $list->id){
  42. $groupList[$key]->selected = true;
  43. }
  44. }
  45. }
  46. return $groupList;
  47. }
  48. public function appendGroups($groups){
  49. DBInstance::execute('DELETE FROM {auth_group_user} WHERE user_id = ?', [$this->id]);
  50. foreach($groups as $group){
  51. DBInstance::insertRecord('auth_group_user', ['user_id' => $this->id, 'group_id' => $group]);
  52. }
  53. }
  54. }