diff --git a/ci4/app/Controllers/Login.php b/ci4/app/Controllers/Login.php index 2e1505ba..72556ba2 100644 --- a/ci4/app/Controllers/Login.php +++ b/ci4/app/Controllers/Login.php @@ -11,6 +11,7 @@ use App\Models\SettingsModel; use App\Models\TemplateModel; use App\Models\UserModel; use App\Models\UserGroupModel; +use App\Models\GroupUserModel; class login extends BaseController { @@ -23,6 +24,7 @@ class login extends BaseController private $template_model; private $confirmation_model; private $integration; + private $group_user_model; function __construct() { @@ -38,6 +40,8 @@ class login extends BaseController // Get Settings $loginAuthFilter = new \App\Filters\LoginAuthFilter(); $loginAuthFilter->getSettings(); + + $this->group_user_model = new GroupUserModel(); } public function index() @@ -184,7 +188,39 @@ class login extends BaseController } // Get access rules - $rules = $this->group_model->where('token', $login['group'])->first(); + #$rules = $this->group_model->where('token', $login['group'])->first(); + $groups = $this->group_user_model + ->select('token_group') + ->where('token_user',$login['token'])->findAll(); + + if (sizeof($groups)>1){ + + $rules = $this->group_model->select('rules')->where('token',$groups[0])->first()['rules']; + $rules = json_decode(html_entity_decode($rules), true); + for ($i=1; $igroup_model->select('rules')->where('token',$groups[$i])->first()['rules']; + foreach ($rules as $key => $value){ + if (array_key_exists($key, json_decode(html_entity_decode($temp_rules), true))){ + $value2 = json_decode(html_entity_decode($temp_rules), true)[$key]; + $rules[$key] = array_unique(array_merge($value, $value2)); + } + else{ + $rules[$key]= $value; + } + } + foreach (json_decode(html_entity_decode($temp_rules), true) as $key2 => $value2){ + if (!array_key_exists($key2, $rules)){ + $rules[$key2] = $value2; + } + } + } + } + else{ + $rules = $this->group_model->select('rules')->where('token',$groups[0])->first(); + } + + + // Save data in session $session->set('id_user', $login['id_user']); @@ -193,7 +229,14 @@ class login extends BaseController $session->set('last_name', $login['last_name']); $session->set('email', $login['email']); $session->set('token', $login['token']); - $session->set('dashboard', $rules['dashboard']); + // JJO + $dashboard = 'user'; + foreach ($groups as $group){ + if($this->group_model->select('dashboard')->where('token',$group)->first()['dashboard'] == 'admin') + $dashboard = 'admin'; + } + $session->set('dashboard', $dashboard); + $session->set('rules', html_entity_decode($rules['rules'])); $session->set('picture', $login['picture']); $session->set('tfa', $login['tfa']); diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 916e7cbc..ac20c0e9 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -44,26 +44,37 @@ class Test extends BaseController } */ - $rules1 = '{"token":["token"],"Activity":["index","all"],"Group":["index","add","edit","store","delete"],"My":["index","notification_view"],"Notification":["index","add","store","delete"],"Profile":["index","store"],"Settings":["index","store","oauth","oauth_store","template","template_store"],"User":["index","add","edit","store","delete"]}'; + $rules1 = '{"token":["token"],"Group":["index","add","edit","store","delete"],"My":["index","notification","notification_view"],"Notification":["index","add","store","delete"],"Profile":["index","store"],"User":["index","add","edit","store","delete"]}'; $rules2 = '{"token":["token"],"Activity":["index"],"Group":["edit"],"My":["notification"]}'; $new_rules = []; + + echo '
';
+        var_dump($rules1);
+        var_dump(json_decode($rules1, true));
+        echo '
'; + + foreach (json_decode($rules1, true) as $key => $value){ - if (array_key_exists($key, json_decode($rules1, true))){ - $value2 = json_decode($rules1, true)[$key]; - $new_rules[$key] = array_unique(array_push($value, $value2)); + if (array_key_exists($key, json_decode($rules2, true))){ + $value2 = json_decode($rules2, true)[$key]; + $new_rules[$key] = array_unique(array_merge($value, $value2)); } else{ $new_rules[$key]= $value; } - - + } + foreach (json_decode($rules2, true) as $key2 => $value2){ + if (!array_key_exists($key2, json_decode($rules1, true))){ + $new_rules[$key2] = $value2; + } } echo '
';
         var_dump($new_rules);
         echo '
'; - dd(); + + } diff --git a/ci4/app/Controllers/User.php b/ci4/app/Controllers/User.php index 467896b5..55aa8d14 100644 --- a/ci4/app/Controllers/User.php +++ b/ci4/app/Controllers/User.php @@ -81,9 +81,12 @@ class User extends BaseController 'icon' => 'fas fa-save' ]; - $data['group'] = $this->group_user_model->select('token,title')->findAll(); + + $data['selected_groups'] = []; + + $data['group'] = $this->group_model->select('token,title')->findAll(); $data['country'] = $this->countries_model->select('code,name')->where('data_lang',session()->get('lang')??'en')->findAll(); - + echo view(getenv('theme.path').'main/header'); echo view(getenv('theme.path').'form/user/form',$data); echo view(getenv('theme.path').'main/footer'); @@ -157,7 +160,7 @@ class User extends BaseController $email = 'required|valid_email'; if(empty($this->request->getPost('id_user'))){ - $email = 'required|valid_email|is_unique[user.email]'; + $email = 'required|valid_email|is_unique[auth_user.email]'; $password = 'required|min_length[8]'; $confirm_password = 'matches[password]'; }else{ @@ -270,13 +273,40 @@ class User extends BaseController return redirect()->to('/user'); }else{ if($session->get('id_user') == $this->request->getPost('id_user')){ - $access_rules = $this->group_model->select('rules')->where('token',$this->request->getPost('group')[0])->first(); - /*echo "
";
-                    var_dump(json_decode(html_entity_decode($access_rules['rules']))); 
-                    echo "
" ; - - dd();*/ - $session->set('rules', html_entity_decode($access_rules['rules'])); + // Get groups tokens + $user_token = $this->user_model + ->select('token') + ->where('id_user',$this->request->getPost('id_user'))->first()['token']; + $groups = $this->group_user_model + ->select('token_group') + ->where('token_user',$user_token)->findAll(); + + if (sizeof($groups)>1){ + + $access_rules = $this->group_model->select('rules')->where('token',$groups[0])->first()['rules']; + $access_rules = json_decode(html_entity_decode($access_rules), true); + for ($i=1; $igroup_model->select('rules')->where('token',$groups[$i])->first()['rules']; + foreach ($access_rules as $key => $value){ + if (array_key_exists($key, json_decode(html_entity_decode($temp_rules), true))){ + $value2 = json_decode(html_entity_decode($temp_rules), true)[$key]; + $access_rules[$key] = array_unique(array_merge($value, $value2)); + } + else{ + $access_rules[$key]= $value; + } + } + foreach (json_decode(html_entity_decode($temp_rules), true) as $key2 => $value2){ + if (!array_key_exists($key2, $access_rules)){ + $access_rules[$key2] = $value2; + } + } + } + } + else{ + $access_rules = $this->group_model->select('rules')->where('token',$groups)->first(); + } + $session->set('rules', html_entity_decode(json_encode($access_rules))); } $session->setFlashdata('sweet', ['success',lang("App.user_alert_edit")]); return redirect()->to('/user'); diff --git a/ci4/app/Views/themes/backend/focus2/form/user/form.php b/ci4/app/Views/themes/backend/focus2/form/user/form.php index 8d36a201..f3f02d6e 100644 --- a/ci4/app/Views/themes/backend/focus2/form/user/form.php +++ b/ci4/app/Views/themes/backend/focus2/form/user/form.php @@ -98,7 +98,7 @@ } ?> - +