diff --git a/apps/aqhome-cgi/modules/common/musers.c b/apps/aqhome-cgi/modules/common/musers.c index 0837bc5..2bb47fb 100644 --- a/apps/aqhome-cgi/modules/common/musers.c +++ b/apps/aqhome-cgi/modules/common/musers.c @@ -48,13 +48,15 @@ static void _handleRqAddUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *s static void _handleRqAddUserPost(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf); static int _getHighestUserId(const AQH_USER_LIST *userList); +static int _modulePermsHasRole(const AQH_MODULE_PERMS *modPerms, uint8_t rid); + static void _writeEditUserForm(AQH_MODULE *m, const AQH_USER *u, const char *sAlias, const char *sUrl, const char *sSubmitText, GWEN_BUFFER *dbuf); -static void _writeModulePerms(const AQH_MODULE *destMod, const AQH_MODULE_PERMS *modPerms, GWEN_BUFFER *dbuf); +static void _writeUserModRolesToForm(const AQH_ROLE_LIST *roles, const AQH_MODULE_PERMS *perms, const char *sModName, GWEN_BUFFER *dbuf); static void _addLabelAndInputToFormTableH(const char *title, const char *name, const char *value, const char *xxtra, GWEN_BUFFER *dbuf); static void _addUserStateLabelAndSelectionToFormTableH(const char *sTitle, const char *sName, int st, GWEN_BUFFER *dbuf); @@ -389,6 +391,24 @@ int _getHighestUserId(const AQH_USER_LIST *userList) +int _modulePermsHasRole(const AQH_MODULE_PERMS *modPerms, uint8_t rid) +{ + if (modPerms) { + int arraySize; + int i; + + arraySize=AQH_ModulePerms_GetRoleArrayArraySize(); + for(i=0; iUser Info\n"); @@ -416,15 +433,13 @@ void _writeEditUserForm(AQH_MODULE *m, _addUserStateLabelAndSelectionToFormTableH("Status", "status", u?AQH_User_GetState(u):AQH_UserState_Unknown, dbuf); GBAS(dbuf, "\n"); - GBAA(dbuf, "\n", sAlias?sAlias:""); - GBAA(dbuf, "\n\n\n", sSubmitText?sSubmitText:"Save"); /* module permissions */ GBAS(dbuf, "

Module Roles

\n"); GBAS(dbuf, "\n" "" - "\n" + "\n" "\n" "\n"); moduleList=AQH_ModService_LoadRawModules(m); @@ -436,22 +451,15 @@ void _writeEditUserForm(AQH_MODULE *m, currentMod=AQH_Module_List_First(moduleList); while(currentMod) { const char *sModName; + const AQH_MODULE_PERMS *modPerms; sModName=AQH_Module_GetName(currentMod); GBAA(dbuf, "\n"); - } + modPerms=modPermsList?AQH_ModulePerms_List_GetByModuleId(modPermsList, sModName):NULL; + _writeUserModRolesToForm(AQH_Module_GetRoleList(currentMod), modPerms, sModName, dbuf); + GBAS(dbuf, "\n"); GBAS(dbuf, ""); currentMod=AQH_Module_List_Next(currentMod); } /* while */ @@ -460,36 +468,42 @@ void _writeEditUserForm(AQH_MODULE *m, GBAS(dbuf, "\n" "
ModuleEnabled RolesActions
ModuleRoles
%s", sModName); - if (modPermsList) { - const AQH_MODULE_PERMS *modPerms; - modPerms=AQH_ModulePerms_List_GetByModuleId(modPermsList, sModName); - if (modPerms) - _writeModulePerms(currentMod, modPerms, dbuf); - GBAS(dbuf, "
"); - if (perms & AQH_MODADMUSERS_PERMS_USERSWRITE) - GBAA(dbuf, "", - sAlias?sAlias:"", sModName); - GBAS(dbuf, "
\n"); + + + GBAA(dbuf, "\n", sAlias?sAlias:""); + GBAA(dbuf, "\n\n\n", sSubmitText?sSubmitText:"Save"); + } -void _writeModulePerms(const AQH_MODULE *destMod, const AQH_MODULE_PERMS *modPerms, GWEN_BUFFER *dbuf) +void _writeUserModRolesToForm(const AQH_ROLE_LIST *roleList, const AQH_MODULE_PERMS *modPerms, const char *sModName, GWEN_BUFFER *dbuf) { - const AQH_ROLE_LIST *roleList; - - roleList=destMod?AQH_Module_GetRoleList(destMod):NULL; if (roleList) { - int roleArraySize; - int i; + const AQH_ROLE *role; - roleArraySize=AQH_ModulePerms_GetRoleArrayArraySize(); - for (i=0; i0)?", ":"", s?s:""); + isChecked=(modPerms && _modulePermsHasRole(modPerms, roleId)); + if (sModName && *sModName) { + GBAA(dbuf, "", sModName, sRoleName, isChecked?"checked":""); + GBAA(dbuf, "", sModName, sRoleName, sRoleName); + } + else { + GBAA(dbuf, "", sRoleName, isChecked?"checked":""); + GBAA(dbuf, "", sRoleName, sRoleName); } } - } /* for */ + role=AQH_Role_List_Next(role); + } } }