mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Editar usuario hecho. Control del acceso hecho. Falta add
This commit is contained in:
@ -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; $i<sizeof($groups); $i++){
|
||||
$temp_rules = $this->group_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']);
|
||||
|
||||
@ -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 '<pre>';
|
||||
var_dump($rules1);
|
||||
var_dump(json_decode($rules1, true));
|
||||
echo '</pre>';
|
||||
|
||||
|
||||
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 '<pre>';
|
||||
var_dump($new_rules);
|
||||
echo '</pre>';
|
||||
dd();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
}
|
||||
?>
|
||||
<?php endforeach; ?>
|
||||
<option value="<?=$item['token']??''?>" <?= $selItem ?>> <?=$item['title']??''?></option>
|
||||
<option value="<?=$item['token']??''?>" <?= isset($selItem)?$selItem:"" ?>> <?=$item['title']??''?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user