aqhome-cgi: add user editing and adding code.
This commit is contained in:
@@ -42,8 +42,20 @@ static void _createRoleList(AQH_MODULE *m);
|
|||||||
static AQH_MODULE *_loadSubModule(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sModuleName);
|
static AQH_MODULE *_loadSubModule(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sModuleName);
|
||||||
static int _handleRequest(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sLastPathElem);
|
static int _handleRequest(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sLastPathElem);
|
||||||
static void _handleRqIndex(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
static void _handleRqIndex(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
||||||
|
static void _handleRqEditUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
||||||
|
static void _handleRqEditUserPost(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
||||||
|
static void _handleRqAddUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
||||||
|
static void _handleRqAddUserPost(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
||||||
|
|
||||||
|
static int _getHighestUserId(const AQH_USER_LIST *userList);
|
||||||
|
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 _writeEditUserForm(const AQH_USER *user, const char *sAlias, GWEN_BUFFER *dbuf);
|
|
||||||
static void _addLabelAndInputToFormTableH(const char *title, const char *name, const char *value, const char *xxtra, 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);
|
static void _addUserStateLabelAndSelectionToFormTableH(const char *sTitle, const char *sName, int st, GWEN_BUFFER *dbuf);
|
||||||
|
|
||||||
@@ -58,6 +70,10 @@ static void _setLocationHeaderForMod(AQCGI_REQUEST *rq, const char *page, const
|
|||||||
|
|
||||||
static AQH_MODSERVICE_HANDLER_ENTRY _requestTable[]={
|
static AQH_MODSERVICE_HANDLER_ENTRY _requestTable[]={
|
||||||
{"index.html", AQCGI_REQUEST_METHOD_GET, AQH_MODADMUSERS_PERMS_USERSREAD, _handleRqIndex},
|
{"index.html", AQCGI_REQUEST_METHOD_GET, AQH_MODADMUSERS_PERMS_USERSREAD, _handleRqIndex},
|
||||||
|
{"edituser.html", AQCGI_REQUEST_METHOD_GET, AQH_MODADMUSERS_PERMS_USERSWRITE, _handleRqEditUserGet},
|
||||||
|
{"edituser.html", AQCGI_REQUEST_METHOD_POST, AQH_MODADMUSERS_PERMS_USERSWRITE, _handleRqEditUserPost},
|
||||||
|
{"adduser.html", AQCGI_REQUEST_METHOD_GET, AQH_MODADMUSERS_PERMS_USERSWRITE, _handleRqAddUserGet},
|
||||||
|
{"adduser.html", AQCGI_REQUEST_METHOD_POST, AQH_MODADMUSERS_PERMS_USERSWRITE, _handleRqAddUserPost},
|
||||||
{NULL, 0, 0, NULL}
|
{NULL, 0, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -151,68 +167,63 @@ int _handleRequest(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const
|
|||||||
|
|
||||||
void _handleRqIndex(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf)
|
void _handleRqIndex(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf)
|
||||||
{
|
{
|
||||||
AQH_SERVICE *sv;
|
AQH_USER_LIST *userList;
|
||||||
GWEN_STRINGLIST *slUsers;
|
|
||||||
uint32_t perms;
|
uint32_t perms;
|
||||||
|
|
||||||
perms=AQH_ModService_GetUserPerms(m);
|
perms=AQH_ModService_GetUserPerms(m);
|
||||||
sv=AQH_ModService_GetService(m);
|
userList=AQH_ModService_LoadRawUsers(m);
|
||||||
slUsers=AQH_Service_ListUsers(sv);
|
|
||||||
if (slUsers) {
|
|
||||||
GWEN_STRINGLISTENTRY *se;
|
|
||||||
|
|
||||||
GBAS(dbuf, "<h1>Users</h1>\n");
|
GBAS(dbuf, "<h1>Users</h1>\n");
|
||||||
GBAS(dbuf,
|
GBAS(dbuf,
|
||||||
"<table class=\"datatable\">\n"
|
"<table class=\"datatable\">\n"
|
||||||
"<thead>"
|
"<thead>"
|
||||||
"<tr><th>Id</th><th>Alias</th><th>Name</th><th>Status</th><th>Email</th><th>Notes</th><th>Actions</th></tr>\n"
|
"<tr><th>Id</th><th>Alias</th><th>Name</th><th>Status</th><th>Email</th><th>Notes</th><th>Actions</th></tr>\n"
|
||||||
"</thead>\n"
|
"</thead>\n"
|
||||||
"<tbody>\n");
|
"<tbody>\n");
|
||||||
se=GWEN_StringList_FirstEntry(slUsers);
|
if (userList) {
|
||||||
while(se) {
|
const AQH_USER *u;
|
||||||
|
|
||||||
|
AQH_User_List_SortByAlias(userList, 1);
|
||||||
|
u=AQH_User_List_First(userList);
|
||||||
|
while(u) {
|
||||||
const char *sUserAlias;
|
const char *sUserAlias;
|
||||||
|
|
||||||
sUserAlias=GWEN_StringListEntry_Data(se);
|
sUserAlias=AQH_User_GetAlias(u);
|
||||||
if (sUserAlias && *sUserAlias) {
|
if (sUserAlias && *sUserAlias) {
|
||||||
AQH_USER *currentUser;
|
uint32_t id;
|
||||||
|
const char *s;
|
||||||
|
const char *sAlias;
|
||||||
|
|
||||||
currentUser=AQH_Service_LoadUser(sv, sUserAlias);
|
id=AQH_User_GetId(u);
|
||||||
if (currentUser) {
|
sAlias=AQH_User_GetAlias(u);
|
||||||
uint32_t id;
|
GBAS(dbuf, "<tr>");
|
||||||
const char *s;
|
GBAA(dbuf, "<td>%lu</td>", (unsigned long int) id);
|
||||||
const char *sAlias;
|
GBAA(dbuf, "<td>%s</td>", sAlias?sAlias:"");
|
||||||
|
s=AQH_User_GetName(u);
|
||||||
|
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
||||||
|
s=AQH_UserState_toString(AQH_User_GetState(u));
|
||||||
|
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
||||||
|
s=AQH_User_GetEmail(u);
|
||||||
|
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
||||||
|
s=AQH_User_GetNotes(u);
|
||||||
|
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
||||||
|
|
||||||
id=AQH_User_GetId(currentUser);
|
GBAS(dbuf, "<td>");
|
||||||
sAlias=AQH_User_GetAlias(currentUser);
|
if (perms & AQH_MODADMUSERS_PERMS_USERSWRITE) {
|
||||||
GBAS(dbuf, "<tr>");
|
DBG_ERROR(NULL, "User=%s", sAlias?sAlias:"");
|
||||||
GBAA(dbuf, "<td>%lu</td>", (unsigned long int) id);
|
GBAS(dbuf, "<a href=\"edituser.html?alias=");
|
||||||
GBAA(dbuf, "<td>%s</td>", sAlias?sAlias:"");
|
GWEN_Text_EscapeToBufferTolerant(sAlias?sAlias:"", dbuf);
|
||||||
s=AQH_User_GetName(currentUser);
|
GBAS(dbuf, "\"><img src=\"/pics/edit.png\"></a>");
|
||||||
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
|
||||||
s=AQH_UserState_toString(AQH_User_GetState(currentUser));
|
|
||||||
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
|
||||||
s=AQH_User_GetEmail(currentUser);
|
|
||||||
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
|
||||||
s=AQH_User_GetNotes(currentUser);
|
|
||||||
GBAA(dbuf, "<td>%s</td>", s?s:"");
|
|
||||||
|
|
||||||
GBAS(dbuf, "<td>");
|
|
||||||
if (perms & AQH_MODADMUSERS_PERMS_USERSWRITE) {
|
|
||||||
GBAS(dbuf, "<a href=\"edituser.html?alias=\"");
|
|
||||||
GWEN_Text_EscapeToBufferTolerant(sAlias?sAlias:"", dbuf);
|
|
||||||
GBAS(dbuf, "\"><img src=\"/pics/edit.png\"></a>");
|
|
||||||
}
|
|
||||||
GBAA(dbuf, "</td>\n");
|
|
||||||
GBAA(dbuf, "</tr>\n");
|
|
||||||
AQH_User_free(currentUser);
|
|
||||||
}
|
}
|
||||||
|
GBAA(dbuf, "</td>\n");
|
||||||
|
GBAA(dbuf, "</tr>\n");
|
||||||
}
|
}
|
||||||
se=GWEN_StringListEntry_Next(se);
|
u=AQH_User_List_Next(u);
|
||||||
}
|
}
|
||||||
GBAS(dbuf,
|
GBAS(dbuf,
|
||||||
"</tbody>\n"
|
"</tbody>\n"
|
||||||
"</table>\n");
|
"</table>\n");
|
||||||
GWEN_StringList_free(slUsers);
|
AQH_User_List_free(userList);
|
||||||
}
|
}
|
||||||
if (perms & AQH_MODADMUSERS_PERMS_USERSADD)
|
if (perms & AQH_MODADMUSERS_PERMS_USERSADD)
|
||||||
GBAS(dbuf, "<hr><a href=\"adduser.html\">Add User</a>");
|
GBAS(dbuf, "<hr><a href=\"adduser.html\">Add User</a>");
|
||||||
@@ -232,7 +243,7 @@ void _handleRqEditUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session
|
|||||||
sAlias=dbQuery?GWEN_DB_GetCharValue(dbQuery, "alias", 0, NULL):NULL;
|
sAlias=dbQuery?GWEN_DB_GetCharValue(dbQuery, "alias", 0, NULL):NULL;
|
||||||
user=(sAlias && *sAlias)?AQH_Service_LoadUser(sv, sAlias):NULL;
|
user=(sAlias && *sAlias)?AQH_Service_LoadUser(sv, sAlias):NULL;
|
||||||
if (user) {
|
if (user) {
|
||||||
_writeEditUserForm(user, sAlias, dbuf);
|
_writeEditUserForm(m, user, sAlias, "edituser.html", "Save", dbuf);
|
||||||
AQH_User_free(user);
|
AQH_User_free(user);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -244,24 +255,242 @@ void _handleRqEditUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void _writeEditUserForm(const AQH_USER *user, const char *sAlias, GWEN_BUFFER *dbuf)
|
void _handleRqEditUserPost(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf)
|
||||||
{
|
{
|
||||||
/* write module info */
|
AQH_SERVICE *sv;
|
||||||
GBAS(dbuf, "<h2>Module Info</h2>\n");
|
GWEN_DB_NODE *dbPost;
|
||||||
GBAS(dbuf,
|
const char *sAlias;
|
||||||
"<form action=\"edituser.html\" method=\"post\">\n"
|
AQH_USER *u;
|
||||||
"<table class=\"formtable\">\n");
|
|
||||||
_addLabelAndInputToFormTableH("Alias", "alias", AQH_User_GetAlias(user), "required", dbuf);
|
sv=AQH_ModService_GetService(m);
|
||||||
_addLabelAndInputToFormTableH("Name", "name", AQH_User_GetName(user), NULL, dbuf);
|
dbPost=AQCGI_Request_GetDbPostBody(rq);
|
||||||
_addLabelAndInputToFormTableH("Email", "email", AQH_User_GetEmail(user), NULL, dbuf);
|
sAlias=dbPost?GWEN_DB_GetCharValue(dbPost, "alias", 0, NULL):NULL;
|
||||||
_addLabelAndInputToFormTableH("Notes", "notes", AQH_User_GetNotes(user), NULL, dbuf);
|
u=(sAlias && *sAlias)?AQH_Service_LoadUser(sv, sAlias):NULL;
|
||||||
_addUserStateLabelAndSelectionToFormTableH("Status", "status", AQH_User_GetState(user), dbuf);
|
if (u) {
|
||||||
|
const char *s;
|
||||||
|
int state;
|
||||||
|
int rv;
|
||||||
|
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "name", 0, NULL);
|
||||||
|
AQH_User_SetName(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "email", 0, NULL);
|
||||||
|
AQH_User_SetEmail(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "notes", 0, NULL);
|
||||||
|
AQH_User_SetNotes(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "status", 0, NULL);
|
||||||
|
state=(s && *s)?AQH_UserState_fromString(s):AQH_UserState_Unknown;
|
||||||
|
if (state!=AQH_UserState_Unknown)
|
||||||
|
AQH_User_SetState(u, state);
|
||||||
|
|
||||||
|
rv=AQH_Service_SaveUser(sv, u);
|
||||||
|
if (rv<0) {
|
||||||
|
GBAS(dbuf, "<h2>Error</h2><p>Error saving user</p>");
|
||||||
|
DBG_ERROR(NULL, "Could not save user \"%s\"", sAlias);
|
||||||
|
AQH_User_free(u);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DBG_ERROR(NULL, "User \"%s\" saved", sAlias);
|
||||||
|
AQH_User_free(u);
|
||||||
|
AQCGI_Request_AddResponseHeaderData(rq, "Location: index.html");
|
||||||
|
AQCGI_Request_SetResponseCode(rq, 303);
|
||||||
|
AQCGI_Request_SetResponseText(rq, "See other");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DBG_ERROR(NULL, "Could not load user \"%s\"", sAlias?sAlias:"<no name>");
|
||||||
|
GBAS(dbuf, "<p>Error loading user.</p>\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void _handleRqAddUserGet(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf)
|
||||||
|
{
|
||||||
|
DBG_ERROR(NULL, "AddUser");
|
||||||
|
_writeEditUserForm(m, NULL, NULL, "adduser.html", "Add", dbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void _handleRqAddUserPost(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf)
|
||||||
|
{
|
||||||
|
AQH_SERVICE *sv;
|
||||||
|
GWEN_DB_NODE *dbPost;
|
||||||
|
const char *sAlias;
|
||||||
|
|
||||||
|
sv=AQH_ModService_GetService(m);
|
||||||
|
dbPost=AQCGI_Request_GetDbPostBody(rq);
|
||||||
|
sAlias=dbPost?GWEN_DB_GetCharValue(dbPost, "alias", 0, NULL):NULL;
|
||||||
|
// TODO: check alias validity
|
||||||
|
if (sAlias) {
|
||||||
|
AQH_USER *u;
|
||||||
|
const char *s;
|
||||||
|
int state;
|
||||||
|
int rv;
|
||||||
|
uint32_t userId;
|
||||||
|
AQH_USER_LIST *userList;
|
||||||
|
|
||||||
|
u=AQH_User_new();
|
||||||
|
userList=AQH_ModService_LoadRawUsers(m);
|
||||||
|
userId=_getHighestUserId(userList)+1;
|
||||||
|
AQH_User_SetId(u, userId);
|
||||||
|
AQH_User_SetAlias(u, sAlias);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "name", 0, NULL);
|
||||||
|
AQH_User_SetName(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "email", 0, NULL);
|
||||||
|
AQH_User_SetEmail(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "notes", 0, NULL);
|
||||||
|
AQH_User_SetNotes(u, s);
|
||||||
|
s=GWEN_DB_GetCharValue(dbPost, "status", 0, NULL);
|
||||||
|
state=(s && *s)?AQH_UserState_fromString(s):AQH_UserState_Unknown;
|
||||||
|
if (state!=AQH_UserState_Unknown)
|
||||||
|
AQH_User_SetState(u, state);
|
||||||
|
|
||||||
|
rv=AQH_Service_AddUser(sv, u);
|
||||||
|
if (rv<0) {
|
||||||
|
GBAS(dbuf, "<h2>Error</h2><p>Error saving user</p>");
|
||||||
|
DBG_ERROR(NULL, "Could not save user \"%s\" (%d)", sAlias, rv);
|
||||||
|
AQH_User_free(u);
|
||||||
|
AQH_User_List_free(userList);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DBG_ERROR(NULL, "User \"%s\" saved", sAlias);
|
||||||
|
AQH_User_free(u);
|
||||||
|
AQCGI_Request_AddResponseHeaderData(rq, "Location: index.html");
|
||||||
|
AQCGI_Request_SetResponseCode(rq, 303);
|
||||||
|
AQCGI_Request_SetResponseText(rq, "See other");
|
||||||
|
AQH_User_List_free(userList);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DBG_ERROR(NULL, "Missing alias");
|
||||||
|
GBAS(dbuf, "<p>Missing alias.</p>\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int _getHighestUserId(const AQH_USER_LIST *userList)
|
||||||
|
{
|
||||||
|
int id=0;
|
||||||
|
|
||||||
|
if (userList) {
|
||||||
|
const AQH_USER *user;
|
||||||
|
|
||||||
|
user=AQH_User_List_First(userList);
|
||||||
|
while(user) {
|
||||||
|
int uid;
|
||||||
|
|
||||||
|
uid=AQH_User_GetId(user);
|
||||||
|
id=(uid>id)?uid:id;
|
||||||
|
user=AQH_User_List_Next(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void _writeEditUserForm(AQH_MODULE *m,
|
||||||
|
const AQH_USER *u,
|
||||||
|
const char *sAlias,
|
||||||
|
const char *sUrl,
|
||||||
|
const char *sSubmitText,
|
||||||
|
GWEN_BUFFER *dbuf)
|
||||||
|
{
|
||||||
|
AQH_MODULE_LIST *moduleList;
|
||||||
|
uint32_t perms;
|
||||||
|
|
||||||
|
perms=AQH_ModService_GetUserPerms(m);
|
||||||
|
|
||||||
|
/* write user info */
|
||||||
|
GBAS(dbuf, "<h2>User Info</h2>\n");
|
||||||
|
GBAA(dbuf,
|
||||||
|
"<form action=\"%s\" method=\"post\">\n"
|
||||||
|
"<table class=\"formtable\">\n",
|
||||||
|
sUrl?sUrl:"");
|
||||||
|
_addLabelAndInputToFormTableH("Alias", "alias", sAlias, "required", dbuf);
|
||||||
|
_addLabelAndInputToFormTableH("Name", "name", u?AQH_User_GetName(u):NULL, NULL, dbuf);
|
||||||
|
_addLabelAndInputToFormTableH("Email", "email", u?AQH_User_GetEmail(u):NULL, NULL, dbuf);
|
||||||
|
_addLabelAndInputToFormTableH("Notes", "notes", u?AQH_User_GetNotes(u):NULL, NULL, dbuf);
|
||||||
|
_addUserStateLabelAndSelectionToFormTableH("Status", "status", u?AQH_User_GetState(u):AQH_UserState_Unknown, dbuf);
|
||||||
|
|
||||||
GBAS(dbuf, "</table>\n");
|
GBAS(dbuf, "</table>\n");
|
||||||
GBAA(dbuf, "<input type=\"hidden\" name=\"alias\" value=\"%s\">\n", sAlias);
|
GBAA(dbuf, "<input type=\"hidden\" name=\"alias\" value=\"%s\">\n", sAlias?sAlias:"");
|
||||||
GBAS(dbuf, "<input type=\"submit\" value=\"Save\">\n</form>\n\n");
|
GBAA(dbuf, "<input type=\"submit\" value=\"%s\">\n</form>\n\n", sSubmitText?sSubmitText:"Save");
|
||||||
|
|
||||||
|
/* module permissions */
|
||||||
|
GBAS(dbuf, "<h2>Module Roles</h2>\n");
|
||||||
|
GBAS(dbuf,
|
||||||
|
"<table class=\"datatable\">\n"
|
||||||
|
"<thead>"
|
||||||
|
"<tr><th>Module</th><th>Enabled Roles</th><th>Actions</th></tr>\n"
|
||||||
|
"</thead>\n"
|
||||||
|
"<tbody>\n");
|
||||||
|
moduleList=AQH_ModService_LoadRawModules(m);
|
||||||
|
if (moduleList) {
|
||||||
|
const AQH_MODULE_PERMS_LIST *modPermsList;
|
||||||
|
const AQH_MODULE *currentMod;
|
||||||
|
|
||||||
|
modPermsList=u?AQH_User_GetModulePermList(u):NULL;
|
||||||
|
currentMod=AQH_Module_List_First(moduleList);
|
||||||
|
while(currentMod) {
|
||||||
|
const char *sModName;
|
||||||
|
|
||||||
|
sModName=AQH_Module_GetName(currentMod);
|
||||||
|
GBAA(dbuf, "<tr><td>%s</td><td>", sModName);
|
||||||
|
if (modPermsList) {
|
||||||
|
const AQH_MODULE_PERMS *modPerms;
|
||||||
|
|
||||||
|
modPerms=AQH_ModulePerms_List_GetByModuleId(modPermsList, sModName);
|
||||||
|
if (modPerms)
|
||||||
|
_writeModulePerms(currentMod, modPerms, dbuf);
|
||||||
|
GBAS(dbuf, "</td></tr>\n");
|
||||||
|
}
|
||||||
|
GBAS(dbuf, "<td>");
|
||||||
|
if (perms & AQH_MODADMUSERS_PERMS_USERSWRITE)
|
||||||
|
GBAA(dbuf, "<a href=\"editmodperms.html?alias=%s&module=%s\"><img src=\"/pics/edit.png\"></a>",
|
||||||
|
sAlias?sAlias:"", sModName);
|
||||||
|
GBAS(dbuf, "</td>");
|
||||||
|
|
||||||
|
currentMod=AQH_Module_List_Next(currentMod);
|
||||||
|
} /* while */
|
||||||
|
AQH_Module_List_free(moduleList);
|
||||||
|
}
|
||||||
|
GBAS(dbuf,
|
||||||
|
"</tbody>\n"
|
||||||
|
"</table>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void _writeModulePerms(const AQH_MODULE *destMod, const AQH_MODULE_PERMS *modPerms, GWEN_BUFFER *dbuf)
|
||||||
|
{
|
||||||
|
const AQH_ROLE_LIST *roleList;
|
||||||
|
|
||||||
|
roleList=destMod?AQH_Module_GetRoleList(destMod):NULL;
|
||||||
|
if (roleList) {
|
||||||
|
int roleArraySize;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
roleArraySize=AQH_ModulePerms_GetRoleArrayArraySize();
|
||||||
|
for (i=0; i<roleArraySize; i++) {
|
||||||
|
int roleId;
|
||||||
|
|
||||||
|
roleId=AQH_ModulePerms_GetRoleArrayAt(modPerms, i);
|
||||||
|
if (roleId) {
|
||||||
|
const AQH_ROLE *role;
|
||||||
|
|
||||||
|
role=AQH_Role_List_GetById(roleList, roleId);
|
||||||
|
if (role) {
|
||||||
|
const char *s;
|
||||||
|
|
||||||
|
s=AQH_Role_GetName(role);
|
||||||
|
GBAA(dbuf, "%s%s", (i>0)?", ":"", s?s:"<unnamed>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} /* for */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user