summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-08 16:46:40 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-08 16:46:40 +0100
commit3e9924b2bd837994344bbc80a3da0b4dce010fd8 (patch)
tree49aaf8994a40bad385c699933c046412f2ff3526
parentca570b1a032b7cb50c5bf17cc0711570ebc13be6 (diff)
users command: Implemented activate and deactivate account feature
-rw-r--r--eurephiadm/commands/users.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/eurephiadm/commands/users.c b/eurephiadm/commands/users.c
index 7e65609..6c9702d 100644
--- a/eurephiadm/commands/users.c
+++ b/eurephiadm/commands/users.c
@@ -31,6 +31,7 @@
#include <eurephiadb_session_struct.h>
#include <eurephia_admin_struct.h>
#include <eurephia_admin_common.h>
+#include <eurephiadb_mapping.h>
#include <eurephiadb_driver.h>
#include "../argparser.h"
@@ -260,8 +261,54 @@ int useraccount(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, in
}
break;
case 'a':
+ if( (rc = eDBadminGetUserInfo(ctx, user)) == 1 ) {
+ if( (user->activated != NULL) && (user->deactivated == NULL) ) {
+ printf("User account is already active\n");
+ } else {
+ // Set activated field to now()
+ free_nullsafe(user->activated);
+ user->activated = strdup("CURRENT_TIMESTAMP");
+
+ // Remove deactivated flag
+ free_nullsafe(user->deactivated);
+ user->setnull_flags = FIELD_DEACTIVATED;
+
+ // Update the user record
+ rc = eDBadminUpdateUser(ctx, user->uid, user);
+ if( rc == 1 ) {
+ printf("User account is activated\n");
+ } else {
+ fprintf(stderr, "%s: Activating user account failed\n", MODULE);
+ }
+ }
+ } else {
+ fprintf(stderr, "%s: User not found\n", MODULE);
+ }
break;
+
case 'd':
+ if( (rc = eDBadminGetUserInfo(ctx, user)) == 1 ) {
+ if( (user->activated != NULL) && (user->deactivated != NULL) ) {
+ printf("User account is already deactived\n");
+ } else if( (user->activated != NULL) ) {
+ // Set deactivated to now()
+ free_nullsafe(user->deactivated);
+ user->deactivated = strdup("CURRENT_TIMESTAMP");
+
+ // Update the user record
+ rc = eDBadminUpdateUser(ctx, user->uid, user);
+ if( rc == 1 ) {
+ printf("User account is deactivated\n");
+ } else {
+ fprintf(stderr, "%s: Deactivating the user account failed\n", MODULE);
+ }
+ } else {
+ // ok
+ fprintf(stderr, "%s: User account is not activated yet\n", MODULE);
+ }
+ } else {
+ fprintf(stderr, "%s: User not found\n", MODULE);
+ }
break;
}