/* * umui.c -- User Management GoForm Processing * * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved. * * See the file "license.txt" for usage and redistribution license requirements * * $Id$ */ /******************************** Description *********************************/ /* * This module provides GoForm functions for User management */ /********************************* Includes ***********************************/ #include "wsIntrn.h" #include "um.h" /********************************* Defines ************************************/ #define NONE_OPTION T("") #define MSG_START T("

") #define MSG_END T("

") /**************************** Forward Declarations ****************************/ static void formAddUser(webs_t wp, char_t *path, char_t *query); static void formDeleteUser(webs_t wp, char_t *path, char_t *query); static void formDisplayUser(webs_t wp, char_t *path, char_t *query); static int aspGenerateUserList(int eid, webs_t wp, int argc, char_t **argv); static void formAddGroup(webs_t wp, char_t *path, char_t *query); static void formDeleteGroup(webs_t wp, char_t *path, char_t *query); static int aspGenerateGroupList(int eid, webs_t wp, int argc, char_t **argv); static void formAddAccessLimit(webs_t wp, char_t *path, char_t *query); static void formDeleteAccessLimit(webs_t wp, char_t *path, char_t *query); static int aspGenerateAccessLimitList(int eid, webs_t wp, int argc, char_t **argv); static int aspGenerateAccessMethodList(int eid, webs_t wp, int argc, char_t **argv); static int aspGeneratePrivilegeList(int eid, webs_t wp, int argc, char_t **argv); static void formSaveUserManagement(webs_t wp, char_t *path, char_t *query); static void formLoadUserManagement(webs_t wp, char_t *path, char_t *query); static void websMsgStart(webs_t wp); static void websMsgEnd(webs_t wp); /*********************************** Code *************************************/ /* * Set up the User Management form handlers */ void formDefineUserMgmt(void) { websAspDefine(T("MakeGroupList"), aspGenerateGroupList); websAspDefine(T("MakeUserList"), aspGenerateUserList); websAspDefine(T("MakeAccessLimitList"), aspGenerateAccessLimitList); websAspDefine(T("MakeAccessMethodList"), aspGenerateAccessMethodList); websAspDefine(T("MakePrivilegeList"), aspGeneratePrivilegeList); websFormDefine(T("AddUser"), formAddUser); websFormDefine(T("DeleteUser"), formDeleteUser); websFormDefine(T("DisplayUser"), formDisplayUser); websFormDefine(T("AddGroup"), formAddGroup); websFormDefine(T("DeleteGroup"), formDeleteGroup); websFormDefine(T("AddAccessLimit"), formAddAccessLimit); websFormDefine(T("DeleteAccessLimit"), formDeleteAccessLimit); websFormDefine(T("SaveUserManagement"), formSaveUserManagement); websFormDefine(T("LoadUserManagement"), formLoadUserManagement); } /******************************************************************************/ /* * Add a user */ static void formAddUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *pass1, *pass2, *group, *enabled, *ok; bool_t bDisable; int nCheck; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); pass1 = websGetVar(wp, T("password"), T("")); pass2 = websGetVar(wp, T("passconf"), T("")); group = websGetVar(wp, T("group"), T("")); enabled = websGetVar(wp, T("enabled"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Add User Cancelled")); } else if (gstrcmp(pass1, pass2) != 0) { websWrite(wp, T("Confirmation Password did not match.")); } else { if (enabled && *enabled && (gstrcmp(enabled, T("on")) == 0)) { bDisable = FALSE; } else { bDisable = TRUE; } nCheck = umAddUser(userid, pass1, group, 0, bDisable); if (nCheck != 0) { char_t * strError; switch (nCheck) { case UM_ERR_DUPLICATE: strError = T("User already exists."); break; case UM_ERR_BAD_NAME: strError = T("Invalid user name."); break; case UM_ERR_BAD_PASSWORD: strError = T("Invalid password."); break; case UM_ERR_NOT_FOUND: strError = T("Invalid or unselected group."); break; default: strError = T("Error writing user record."); break; } websWrite(wp, T("Unable to add user, \"%s\". %s"), userid, strError); } else { websWrite(wp, T("User, \"%s\" was successfully added."), userid); } } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); } /******************************************************************************/ /* * Delete a user */ static void formDeleteUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *ok; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Delete User Cancelled")); } else if (umUserExists(userid) == FALSE) { websWrite(wp, T("ERROR: User \"%s\" not found"), userid); } else if (umGetUserProtected(userid)) { websWrite(wp, T("ERROR: User, \"%s\" is delete-protected."), userid); } else if (umDeleteUser(userid) != 0) { websWrite(wp, T("ERROR: Unable to delete user, \"%s\" "), userid); } else { websWrite(wp, T("User, \"%s\" was successfully deleted."), userid); } websMsgEnd(wp); websFooter(wp); websDone(wp, 200); } /******************************************************************************/ /* * Display the user info */ static void formDisplayUser(webs_t wp, char_t *path, char_t *query) { char_t *userid, *ok, *temp; bool_t enabled; a_assert(wp); userid = websGetVar(wp, T("user"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websWrite(wp, T("")); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Display User Cancelled")); } else if (umUserExists(userid) == FALSE) { websWrite(wp, T("ERROR: User %s not found.\n"), userid); } else { websWrite(wp, T("

User ID: %s

\n"), userid); temp = umGetUserGroup(userid); websWrite(wp, T("

User Group: %s

\n"), temp); enabled = umGetUserEnabled(userid); websWrite(wp, T("

Enabled: %d

\n"), enabled); } websWrite(wp, T("\n")); websFooter(wp); websDone(wp, 200); } /******************************************************************************/ /* * Generate HTML to create a list box containing the users */ static int aspGenerateUserList(int eid, webs_t wp, int argc, char_t **argv) { char_t *userid; int row, nBytesSent, nBytes; a_assert(wp); nBytes = websWrite(wp, T("")); return nBytesSent; } /******************************************************************************/ /* * Add a group */ static void formAddGroup(webs_t wp, char_t *path, char_t *query) { char_t *group, *enabled, *privilege, *method, *ok, *pChar; int nCheck; short priv; accessMeth_t am; bool_t bDisable; a_assert(wp); group = websGetVar(wp, T("group"), T("")); method = websGetVar(wp, T("method"), T("")); enabled = websGetVar(wp, T("enabled"), T("")); privilege = websGetVar(wp, T("privilege"), T("")); ok = websGetVar(wp, T("ok"), T("")); websHeader(wp); websMsgStart(wp); if (gstricmp(ok, T("ok")) != 0) { websWrite(wp, T("Add Group Cancelled.")); } else if ((group == NULL) || (*group == 0)) { websWrite(wp, T("No Group Name was entered.")); } else if (umGroupExists(group)) { websWrite(wp, T("ERROR: Group, \"%s\" already exists."), group); } else { if (privilege && *privilege) { /* * privilege is a mulitple ")); /* * Add a special "" element to allow de-selection */ nBytes = websWrite(wp, T("