- updated to the new pikotools api (child spaces were removed)

some plugins need to be fixed yet: ticket, gallery, group, menu
- added current user to default models as "user"
- renamed in User: super_user -> is_super_user, env -> admin_env, pass_hash_salted -> is_pass_hash_salted
- now Users class has a WinixModel as a base class
  some plugin calls have to be fixed yet
- added UserWrapper model with a pointer to User class
- removed from ItemContent: methods for accessing 'meta' and 'admin_meta', now ezc can iterate through Space classes
- fixed in env winix function: if there is "changeuser" parameter then we should only switch the user (not save anything)
This commit is contained in:
2021-06-27 23:31:50 +02:00
parent 472490c239
commit 1d18b7fa12
59 changed files with 1419 additions and 1607 deletions

View File

@@ -46,7 +46,6 @@ namespace Fun
Env::Env()
{
fun.url = L"env";
puser = 0;
}
@@ -59,7 +58,7 @@ bool Env::HasAccess()
{
// show/change admin environment variables for a user
if( !cur->session->puser->super_user )
if( !cur->session->puser->is_super_user )
return false;
}
@@ -78,16 +77,16 @@ bool Env::EditAdminEnv(const std::wstring & env_str, bool use_ses_log)
{
if( Parse(env_str) )
{
puser->aenv = space;
user_wrapper.user->admin_env = space;
if( puser->update() )
if( user_wrapper.user->update() )
{
return true;
}
else
{
log << log1 << "Evn: a database problem with changing admin environment variables for user: "
<< puser->name << ", id: " << puser->id << logend;
<< user_wrapper.user->login << ", id: " << user_wrapper.user->id << logend;
}
}
else
@@ -106,16 +105,16 @@ bool Env::EditEnv(const std::wstring & env_str, bool use_ses_log)
{
if( Parse(env_str) )
{
puser->env = space;
user_wrapper.user->env = space;
if( puser->update() )
if( user_wrapper.user->update() )
{
return true;
}
else
{
log << log1 << "Evn: a database problem with changing admin environment variables for user: "
<< puser->name << ", id: " << puser->id << logend;
<< user_wrapper.user->login << ", id: " << user_wrapper.user->id << logend;
}
}
else
@@ -138,61 +137,89 @@ void Env::SaveEnv()
if( cur->request->IsParam(L"a") )
{
if( cur->session->puser->super_user )
if( cur->session->puser->is_super_user )
{
status = EditAdminEnv(env_str, true);
if( status )
{
slog << loginfo << T(L"env_admin_changed_successfully") << logend;
}
}
}
else
{
status = EditEnv(env_str, true);
}
if( status )
system->RedirectToLastItem();
if( status )
{
slog << loginfo << T(L"env_changed_successfully") << logend;
}
}
}
void Env::RegisterModels()
{
cur->request->models.Add(L"users", system->users);
cur->request->models.Add(L"env_user", user_wrapper);
}
void Env::MakePost()
{
puser = nullptr;
user_wrapper.user = nullptr;
user_wrapper.set_connector(model_connector);
if( cur->session->puser )
{
puser = cur->session->puser;
user_wrapper.user = cur->session->puser;
if( cur->request->IsPostVar(L"changeuser") )
if( cur->session->puser->is_super_user && cur->request->IsPostVar(L"userid") )
{
// show environments variables for the specified user
if( puser->super_user && cur->request->IsPostVar(L"userid") )
{
long id = Tol(cur->request->PostVar(L"userid"));
puser = system->users.GetUser(id);
long id = Tol(cur->request->PostVar(L"userid"));
user_wrapper.user = system->users.GetUser(id);
if( puser )
{
log << log2 << "Env: changing user to: " << puser->name << ", id: " << puser->id << logend;
}
if( user_wrapper.user->id != cur->session->puser->id )
{
log << log2 << "Env: changing user to: " << user_wrapper.user->login << ", id: " << user_wrapper.user->id << logend;
}
}
if( puser )
if( !cur->request->IsPostVar(L"changeuser") )
{
/*
* this puser should be set in a new struct (based on Model)
* and put to templates
*
*/
SaveEnv();
}
else
{
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
if( user_wrapper.user )
{
SaveEnv();
}
else
{
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
}
}
RegisterModels();
}
void Env::MakeGet()
{
user_wrapper.user = cur->session->puser;
user_wrapper.set_connector(model_connector);
RegisterModels();
}
void Env::Clear()
{
user_wrapper.user = nullptr;
}
} // namespace