Editar usuario hecho. Control del acceso hecho. Falta add

This commit is contained in:
Jaime Jiménez
2023-04-25 15:36:53 +02:00
parent 39d287fa14
commit 92bf19f2d5
4 changed files with 104 additions and 20 deletions

View File

@ -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 "<pre>";
var_dump(json_decode(html_entity_decode($access_rules['rules'])));
echo "</pre>" ;
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; $i<sizeof($groups); $i++){
$temp_rules = $this->group_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');