Trabajando sobre unir las reglas de varios grupos

This commit is contained in:
Jaime Jimenez
2023-04-24 20:35:28 +02:00
parent 2ccb6c31ac
commit 39d287fa14
3 changed files with 70 additions and 23 deletions

View File

@ -3,22 +3,68 @@
namespace App\Controllers;
use App\Models\UserModel;
use App\Models\UserGroupModel;
use App\Models\GroupUserModel;
class Test extends BaseController
{
private $user_model;
private $group_user_model;
private $group_model;
function __construct()
{
$this->user_model = new UserModel();
$this->group_user_model = new GroupUserModel();
$this->group_model = new UserGroupModel();
}
public function index()
{
["id_user"]=>
string(1) "1"
$test = [
"115b5ad39b853084209caf6824224f6b",
"fff26488a4249d76a8de5c0426acb8f7",
"72f5e898a67bb2fb72b185d9138585b2"];
/////////////////////////////////7
// Join groups access rules
/*$user_token = "a4a60f9f064218b09cf108418e585507";
$groups = $this->group_user_model
->select('token_group')
->where('token_user', $user_token)->findAll();
if(sizeof($groups)>0){
$rules = html_entity_decode($this->group_model->select('rules')->where('token',$groups[0]['token_group'])->first()['rules']);
}
for ($i = 1; $i<sizeof($groups); $i++) {
echo var_dump($this->group_model->select('rules')->where('token',$groups[$i]['token_group'])->first()['rules']);
$rules = json_encode(
array_merge(
json_decode($rules, true),
json_decode($this->group_model->select('rules')->where('token',$groups[$i]['token_group'])->first()['rules'], true)
)
);
} */
$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"]}';
$rules2 = '{"token":["token"],"Activity":["index"],"Group":["edit"],"My":["notification"]}';
$new_rules = [];
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));
}
else{
$new_rules[$key]= $value;
}
echo "Hola";
}
echo '<pre>';
var_dump($new_rules);
echo '</pre>';
dd();
}
}

View File

@ -132,6 +132,7 @@ class User extends BaseController
}
$data['selected_groups'] = $this->group_user_model->select('token_group')->where('token_user', $token)->findAll();
$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();
@ -223,12 +224,6 @@ class User extends BaseController
}else{
echo "<pre>";
var_dump($this->request->getPost());
echo "</pre>" ;
dd();
$this->user_model->save([
'id_user' => $this->request->getPost('id_user'),
//'group' => $this->request->getPost('group'),
@ -254,22 +249,19 @@ class User extends BaseController
]);
}
// Update group_user pivot table
$user_token = $this->user_model
->select('token')
->where('id_user',$this->request->getPost('id_user'))->first();
$this->group_user_model->delete(['user_token' => $user_token]);
$groups = implode(",",$this->request->getPost('group')??[]);
->where('id_user',$this->request->getPost('id_user'))->first()['token'];
$this->group_user_model->where('token_user', $user_token)->delete();
$groups = $this->request->getPost('group');
foreach ($groups as $group){
$group_user_data = [
'token_user' => $this->request->getPost('id_user'),
'token_user' => $user_token,
'token_group' => $group
];
$this->group_user_model->insert($group_user_data);
}
}
@ -278,7 +270,12 @@ 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'))->first();
$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']));
}
$session->setFlashdata('sweet', ['success',lang("App.user_alert_edit")]);

View File

@ -91,10 +91,14 @@
<?php
if ($id_select['token_group'] == $item['token']){
$selItem = 'selected';
break;
}
else{
$selItem = '';
}
?>
<?php endforeach; ?>
<option value="<?=$item['token']??''?>" <?= (isset($selItem))?'selected':'' ?>> <?=$item['title']??''?></option>
<option value="<?=$item['token']??''?>" <?= $selItem ?>> <?=$item['title']??''?></option>
<?php endforeach; ?>
</select>
</div>