mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'dev/user_roles' into 'main'
Dev/user roles See merge request jjimenez/safekat!1
This commit is contained in:
2014
backups_bbdd/04252023_sk_main.sql
Normal file
2014
backups_bbdd/04252023_sk_main.sql
Normal file
File diff suppressed because it is too large
Load Diff
138
ci4/.env
Normal file
138
ci4/.env
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
#--------------------------------------------------------------------
|
||||||
|
# Example Environment Configuration file
|
||||||
|
#
|
||||||
|
# This file can be used as a starting point for your own
|
||||||
|
# custom .env files, and contains most of the possible settings
|
||||||
|
# available in a default install.
|
||||||
|
#
|
||||||
|
# By default, all of the settings are commented out. If you want
|
||||||
|
# to override the setting, you must un-comment it by removing the '#'
|
||||||
|
# at the beginning of the line.
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# ENVIRONMENT
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
CI_ENVIRONMENT = development
|
||||||
|
# CI_ENVIRONMENT = testing
|
||||||
|
# CI_ENVIRONMENT = production
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# APP
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
app.baseURL = 'http://safekat.test'
|
||||||
|
# app.forceGlobalSecureRequests = false
|
||||||
|
|
||||||
|
# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
|
||||||
|
# app.sessionCookieName = 'ci_session'
|
||||||
|
# app.sessionExpiration = 7200
|
||||||
|
# app.sessionSavePath = null
|
||||||
|
# app.sessionMatchIP = false
|
||||||
|
# app.sessionTimeToUpdate = 300
|
||||||
|
# app.sessionRegenerateDestroy = false
|
||||||
|
|
||||||
|
# app.CSPEnabled = false
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# DATABASE
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
database.default.hostname = localhost
|
||||||
|
database.default.database = sk_main
|
||||||
|
database.default.username = sk_main
|
||||||
|
database.default.password = 61tv&G1Zf^XY
|
||||||
|
database.default.DBDriver = MySQLi
|
||||||
|
database.default.DBPrefix =
|
||||||
|
database.default.dump =
|
||||||
|
|
||||||
|
# database.tests.hostname = localhost
|
||||||
|
# database.tests.database = ci4
|
||||||
|
# database.tests.username = root
|
||||||
|
# database.tests.password = root
|
||||||
|
# database.tests.DBDriver = MySQLi
|
||||||
|
# database.tests.DBPrefix =
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# CONTENT SECURITY POLICY
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
# contentsecuritypolicy.reportOnly = false
|
||||||
|
# contentsecuritypolicy.defaultSrc = 'none'
|
||||||
|
# contentsecuritypolicy.scriptSrc = 'self'
|
||||||
|
# contentsecuritypolicy.styleSrc = 'self'
|
||||||
|
# contentsecuritypolicy.imageSrc = 'self'
|
||||||
|
# contentsecuritypolicy.base_uri = null
|
||||||
|
# contentsecuritypolicy.childSrc = null
|
||||||
|
# contentsecuritypolicy.connectSrc = 'self'
|
||||||
|
# contentsecuritypolicy.fontSrc = null
|
||||||
|
# contentsecuritypolicy.formAction = null
|
||||||
|
# contentsecuritypolicy.frameAncestors = null
|
||||||
|
# contentsecuritypolicy.frameSrc = null
|
||||||
|
# contentsecuritypolicy.mediaSrc = null
|
||||||
|
# contentsecuritypolicy.objectSrc = null
|
||||||
|
# contentsecuritypolicy.pluginTypes = null
|
||||||
|
# contentsecuritypolicy.reportURI = null
|
||||||
|
# contentsecuritypolicy.sandbox = false
|
||||||
|
# contentsecuritypolicy.upgradeInsecureRequests = false
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# COOKIE
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
# cookie.prefix = ''
|
||||||
|
# cookie.expires = 0
|
||||||
|
# cookie.path = '/'
|
||||||
|
# cookie.domain = ''
|
||||||
|
# cookie.secure = false
|
||||||
|
# cookie.httponly = false
|
||||||
|
# cookie.samesite = 'Lax'
|
||||||
|
# cookie.raw = false
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# ENCRYPTION
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
# encryption.key =
|
||||||
|
# encryption.driver = OpenSSL
|
||||||
|
# encryption.blockSize = 16
|
||||||
|
# encryption.digest = SHA512
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# HONEYPOT
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
# honeypot.hidden = 'true'
|
||||||
|
# honeypot.label = 'Fill This Field'
|
||||||
|
# honeypot.name = 'honeypot'
|
||||||
|
# honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
|
||||||
|
# honeypot.container = '<div style="display:none">{template}</div>'
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# SECURITY
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
security.tokenName = 'webguard_token'
|
||||||
|
security.headerName = 'X-CSRF-TOKEN'
|
||||||
|
security.cookieName = 'webguard_cookie'
|
||||||
|
security.expires = 7200
|
||||||
|
security.regenerate = true
|
||||||
|
security.redirect = true
|
||||||
|
security.samesite = 'Lax'
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# LOGGER
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
# logger.threshold = 4
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
# CUSTOMIZED
|
||||||
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
|
theme.path = 'themes/backend/focus2/'
|
||||||
|
themef.path = 'themes/frontend/tivo/'
|
||||||
|
api.return = 'json'
|
||||||
|
demo.mode = false
|
||||||
|
purchase.code = '1234'
|
||||||
2
ci4/.gitignore
vendored
2
ci4/.gitignore
vendored
@ -41,7 +41,7 @@ $RECYCLE.BIN/
|
|||||||
#-------------------------
|
#-------------------------
|
||||||
# These should never be under version control,
|
# These should never be under version control,
|
||||||
# as it poses a security risk.
|
# as it poses a security risk.
|
||||||
.env
|
#.env
|
||||||
.vagrant
|
.vagrant
|
||||||
Vagrantfile
|
Vagrantfile
|
||||||
|
|
||||||
|
|||||||
@ -56,24 +56,27 @@ class Ajax extends ResourceController
|
|||||||
|
|
||||||
//Total number of records without filtering
|
//Total number of records without filtering
|
||||||
$totalRecords = $this->user_model->select('id_user')
|
$totalRecords = $this->user_model->select('id_user')
|
||||||
->join('auth_user_group','auth_user_group.token = auth_user.group')
|
//->join('auth_user_group','auth_user_group.token = auth_user.group')
|
||||||
->countAllResults();
|
->countAllResults();
|
||||||
|
|
||||||
//Total number of records with filtering
|
//Total number of records with filtering
|
||||||
$totalRecordwithFilter = $this->user_model->select('id_user')
|
$totalRecordwithFilter = $this->user_model->select('id_user')
|
||||||
->join('auth_user_group','auth_user_group.token = auth_user.group')
|
//->join('auth_user_group','auth_user_group.token = auth_user.group')
|
||||||
->orLike('first_name', $searchValue)
|
->orLike('first_name', $searchValue)
|
||||||
->orLike('email', $searchValue)
|
->orLike('email', $searchValue)
|
||||||
->countAllResults();
|
->countAllResults();
|
||||||
|
|
||||||
//Fetch records
|
//Fetch records
|
||||||
$records = $this->user_model->select('auth_user.*,auth_user_group.title')
|
//$records = $this->user_model->select('auth_user.*,auth_user_group.title')
|
||||||
->join('auth_user_group','auth_user_group.token = auth_user.group')
|
$records = $this->user_model->select('auth_user.*')
|
||||||
|
//->join('auth_user_group','auth_user_group.token = auth_user.group')
|
||||||
->orLike('first_name', $searchValue)
|
->orLike('first_name', $searchValue)
|
||||||
->orLike('email', $searchValue)
|
->orLike('email', $searchValue)
|
||||||
->orderBy($columnName,$columnSortOrder)
|
->orderBy($columnName,$columnSortOrder)
|
||||||
->findAll($rowperpage, $start);
|
->findAll($rowperpage, $start);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Format records
|
//Format records
|
||||||
foreach ($records as $key => $value){
|
foreach ($records as $key => $value){
|
||||||
if($records[$key]['email_confirmed'] == 1){
|
if($records[$key]['email_confirmed'] == 1){
|
||||||
@ -96,10 +99,26 @@ class Ajax extends ResourceController
|
|||||||
//Data records
|
//Data records
|
||||||
$data = array();
|
$data = array();
|
||||||
foreach($records as $record ){
|
foreach($records as $record ){
|
||||||
|
|
||||||
|
$groups_token = $this->group_user_model->select('token_group')
|
||||||
|
->where('token_user',$record['token'])
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$groups_names = [];
|
||||||
|
foreach($groups_token as $g_t){
|
||||||
|
$title = $this->group_model->select('title')
|
||||||
|
->where('token',$g_t)
|
||||||
|
->first()['title'];
|
||||||
|
array_push($groups_names, $title);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$data[] = array(
|
$data[] = array(
|
||||||
"first_name"=>$record['first_name'],
|
"first_name"=>$record['first_name'],
|
||||||
"email"=>$record['email'],
|
"email"=>$record['email'],
|
||||||
"group"=>$record['title'],
|
|
||||||
|
"group"=>$groups_names,//JJO$record['title'],
|
||||||
|
|
||||||
"mobile"=>$record['mobile'],
|
"mobile"=>$record['mobile'],
|
||||||
"last_access"=>$record['last_access'],
|
"last_access"=>$record['last_access'],
|
||||||
"last_ip"=>$record['last_ip'],
|
"last_ip"=>$record['last_ip'],
|
||||||
|
|||||||
@ -11,6 +11,7 @@ use App\Models\SettingsModel;
|
|||||||
use App\Models\TemplateModel;
|
use App\Models\TemplateModel;
|
||||||
use App\Models\UserModel;
|
use App\Models\UserModel;
|
||||||
use App\Models\UserGroupModel;
|
use App\Models\UserGroupModel;
|
||||||
|
use App\Models\GroupUserModel;
|
||||||
|
|
||||||
class login extends BaseController
|
class login extends BaseController
|
||||||
{
|
{
|
||||||
@ -23,6 +24,7 @@ class login extends BaseController
|
|||||||
private $template_model;
|
private $template_model;
|
||||||
private $confirmation_model;
|
private $confirmation_model;
|
||||||
private $integration;
|
private $integration;
|
||||||
|
private $group_user_model;
|
||||||
|
|
||||||
function __construct()
|
function __construct()
|
||||||
{
|
{
|
||||||
@ -38,6 +40,8 @@ class login extends BaseController
|
|||||||
// Get Settings
|
// Get Settings
|
||||||
$loginAuthFilter = new \App\Filters\LoginAuthFilter();
|
$loginAuthFilter = new \App\Filters\LoginAuthFilter();
|
||||||
$loginAuthFilter->getSettings();
|
$loginAuthFilter->getSettings();
|
||||||
|
|
||||||
|
$this->group_user_model = new GroupUserModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
@ -184,17 +188,56 @@ class login extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get access rules
|
// 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
|
// Save data in session
|
||||||
$session->set('id_user', $login['id_user']);
|
$session->set('id_user', $login['id_user']);
|
||||||
$session->set('group', $login['group']);
|
//$session->set('group', $login['group']);
|
||||||
$session->set('first_name', $login['first_name']);
|
$session->set('first_name', $login['first_name']);
|
||||||
$session->set('last_name', $login['last_name']);
|
$session->set('last_name', $login['last_name']);
|
||||||
$session->set('email', $login['email']);
|
$session->set('email', $login['email']);
|
||||||
$session->set('token', $login['token']);
|
$session->set('token', $login['token']);
|
||||||
$session->set('dashboard', $rules['dashboard']);
|
// JJO
|
||||||
$session->set('rules', html_entity_decode($rules['rules']));
|
$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(json_encode($rules)));
|
||||||
$session->set('picture', $login['picture']);
|
$session->set('picture', $login['picture']);
|
||||||
$session->set('tfa', $login['tfa']);
|
$session->set('tfa', $login['tfa']);
|
||||||
$session->set('tfa_secret', $login['tfa_secret']);
|
$session->set('tfa_secret', $login['tfa_secret']);
|
||||||
|
|||||||
@ -3,22 +3,84 @@
|
|||||||
namespace App\Controllers;
|
namespace App\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Models\UserModel;
|
||||||
|
use App\Models\UserGroupModel;
|
||||||
|
use App\Models\GroupUserModel;
|
||||||
|
|
||||||
class Test extends BaseController
|
class Test extends BaseController
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private $user_model;
|
||||||
|
private $group_user_model;
|
||||||
|
private $group_model;
|
||||||
|
|
||||||
function __construct()
|
function __construct()
|
||||||
{
|
{
|
||||||
|
$this->user_model = new UserModel();
|
||||||
|
$this->group_user_model = new GroupUserModel();
|
||||||
|
$this->group_model = new UserGroupModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
["id_user"]=>
|
/////////////////////////////////7
|
||||||
string(1) "1"
|
// Join groups access rules
|
||||||
$test = [
|
/*$user_token = "a4a60f9f064218b09cf108418e585507";
|
||||||
"115b5ad39b853084209caf6824224f6b",
|
$groups = $this->group_user_model
|
||||||
"fff26488a4249d76a8de5c0426acb8f7",
|
->select('token_group')
|
||||||
"72f5e898a67bb2fb72b185d9138585b2"];
|
->where('token_user', $user_token)->findAll();
|
||||||
|
|
||||||
echo "Hola";
|
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)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} */
|
||||||
|
|
||||||
|
$user_token = 'c0bf18621f78cb2ffc4a67cf8d5173c7';
|
||||||
|
$groups_token = $this->group_user_model->select('token_group')
|
||||||
|
->where('token_user',$user_token)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$groups_names = [];
|
||||||
|
foreach($groups_token as $g_t){
|
||||||
|
$title = $this->group_model->select('title')
|
||||||
|
->where('token',$g_t)
|
||||||
|
->first()['title'];
|
||||||
|
array_push($groups_names, $title);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<pre>';
|
||||||
|
var_dump($groups_names);
|
||||||
|
echo '</pre>';
|
||||||
|
|
||||||
|
dd();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Total number of records without filtering
|
||||||
|
$totalRecords = $this->user_model->select('id_user')
|
||||||
|
->join('auth_user_group','auth_user_group.token = auth_user.group')
|
||||||
|
->countAllResults();
|
||||||
|
|
||||||
|
//Total number of records with filtering
|
||||||
|
$totalRecordwithFilter = $this->user_model->select('id_user')
|
||||||
|
->join('auth_user_group','auth_user_group.token = auth_user.group')
|
||||||
|
->orLike('first_name', $searchValue)
|
||||||
|
->orLike('email', $searchValue)
|
||||||
|
->countAllResults();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,9 +81,12 @@ class User extends BaseController
|
|||||||
'icon' => 'fas fa-save'
|
'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();
|
$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').'main/header');
|
||||||
echo view(getenv('theme.path').'form/user/form',$data);
|
echo view(getenv('theme.path').'form/user/form',$data);
|
||||||
echo view(getenv('theme.path').'main/footer');
|
echo view(getenv('theme.path').'main/footer');
|
||||||
@ -132,6 +135,7 @@ class User extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data['selected_groups'] = $this->group_user_model->select('token_group')->where('token_user', $token)->findAll();
|
$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['group'] = $this->group_model->select('token,title')->findAll();
|
||||||
$data['country'] = $this->countries_model->select('code,name')->where('data_lang',session()->get('lang')??'en')->findAll();
|
$data['country'] = $this->countries_model->select('code,name')->where('data_lang',session()->get('lang')??'en')->findAll();
|
||||||
|
|
||||||
@ -156,7 +160,7 @@ class User extends BaseController
|
|||||||
$email = 'required|valid_email';
|
$email = 'required|valid_email';
|
||||||
|
|
||||||
if(empty($this->request->getPost('id_user'))){
|
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]';
|
$password = 'required|min_length[8]';
|
||||||
$confirm_password = 'matches[password]';
|
$confirm_password = 'matches[password]';
|
||||||
}else{
|
}else{
|
||||||
@ -200,7 +204,7 @@ class User extends BaseController
|
|||||||
$phpass = new PasswordHash(8, true);
|
$phpass = new PasswordHash(8, true);
|
||||||
$this->user_model->save([
|
$this->user_model->save([
|
||||||
'id_user' => null,
|
'id_user' => null,
|
||||||
'group' => $this->request->getPost('group'),
|
//'group' => $this->request->getPost('group'),
|
||||||
'first_name' => $this->request->getPost('first_name'),
|
'first_name' => $this->request->getPost('first_name'),
|
||||||
'last_name' => $this->request->getPost('last_name'),
|
'last_name' => $this->request->getPost('last_name'),
|
||||||
'date_birth' => $date_birth,
|
'date_birth' => $date_birth,
|
||||||
@ -223,12 +227,6 @@ class User extends BaseController
|
|||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
echo "<pre>";
|
|
||||||
var_dump($this->request->getPost());
|
|
||||||
echo "</pre>" ;
|
|
||||||
|
|
||||||
dd();
|
|
||||||
|
|
||||||
$this->user_model->save([
|
$this->user_model->save([
|
||||||
'id_user' => $this->request->getPost('id_user'),
|
'id_user' => $this->request->getPost('id_user'),
|
||||||
//'group' => $this->request->getPost('group'),
|
//'group' => $this->request->getPost('group'),
|
||||||
@ -254,22 +252,19 @@ class User extends BaseController
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update group_user pivot table
|
||||||
$user_token = $this->user_model
|
$user_token = $this->user_model
|
||||||
->select('token')
|
->select('token')
|
||||||
->where('id_user',$this->request->getPost('id_user'))->first();
|
->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');
|
||||||
$this->group_user_model->delete(['user_token' => $user_token]);
|
|
||||||
$groups = implode(",",$this->request->getPost('group')??[]);
|
|
||||||
foreach ($groups as $group){
|
foreach ($groups as $group){
|
||||||
$group_user_data = [
|
$group_user_data = [
|
||||||
'token_user' => $this->request->getPost('id_user'),
|
'token_user' => $user_token,
|
||||||
'token_group' => $group
|
'token_group' => $group
|
||||||
];
|
];
|
||||||
$this->group_user_model->insert($group_user_data);
|
$this->group_user_model->insert($group_user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -278,8 +273,40 @@ class User extends BaseController
|
|||||||
return redirect()->to('/user');
|
return redirect()->to('/user');
|
||||||
}else{
|
}else{
|
||||||
if($session->get('id_user') == $this->request->getPost('id_user')){
|
if($session->get('id_user') == $this->request->getPost('id_user')){
|
||||||
$access_rules = $this->group_model->select('rules')->where('token',$this->request->getPost('group'))->first();
|
// Get groups tokens
|
||||||
$session->set('rules', html_entity_decode($access_rules['rules']));
|
$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")]);
|
$session->setFlashdata('sweet', ['success',lang("App.user_alert_edit")]);
|
||||||
return redirect()->to('/user');
|
return redirect()->to('/user');
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Database\Migrations;
|
||||||
|
|
||||||
|
use CodeIgniter\Database\Migration;
|
||||||
|
|
||||||
|
class RemoveGroupFromUser extends Migration
|
||||||
|
{
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$this->forge->dropColumn('auth_user', ['group']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$sql = "ALTER TABLE `auth_user` ADD `group` varchar(216) COLLATE latin1_general_ci;";
|
||||||
|
$this->db->query($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -91,10 +91,14 @@
|
|||||||
<?php
|
<?php
|
||||||
if ($id_select['token_group'] == $item['token']){
|
if ($id_select['token_group'] == $item['token']){
|
||||||
$selItem = 'selected';
|
$selItem = 'selected';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$selItem = '';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<option value="<?=$item['token']??''?>" <?= (isset($selItem))?'selected':'' ?>> <?=$item['title']??''?></option>
|
<option value="<?=$item['token']??''?>" <?= isset($selItem)?$selItem:"" ?>> <?=$item['title']??''?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user