diff options
author | Alejandro Villanueva <admin@ialex.org> | 2011-06-22 11:51:31 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2011-06-22 21:49:06 -0500 |
commit | 96108ea2859780807a69941184c41950a923e38e (patch) | |
tree | 8ff3157de81a52fd8e7a3194a00bacfdc672dab4 /mediagoblin/gmg_commands/users.py | |
parent | 54de443a6a6cd673cfef0efa73a9d5e6fc6cde7c (diff) | |
download | mediagoblin-96108ea2859780807a69941184c41950a923e38e.tar.lz mediagoblin-96108ea2859780807a69941184c41950a923e38e.tar.xz mediagoblin-96108ea2859780807a69941184c41950a923e38e.zip |
Adding new function to gmg_commands, adduser,makeadmin and changepw issue 373
Diffstat (limited to 'mediagoblin/gmg_commands/users.py')
-rw-r--r-- | mediagoblin/gmg_commands/users.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/mediagoblin/gmg_commands/users.py b/mediagoblin/gmg_commands/users.py new file mode 100644 index 00000000..368834d0 --- /dev/null +++ b/mediagoblin/gmg_commands/users.py @@ -0,0 +1,128 @@ +import os + +from mediagoblin.gmg_commands import util as commands_util +from mediagoblin.db.open import setup_connection_and_db_from_config +from mediagoblin.auth import lib as auth_lib +from mediagoblin import mg_globals + +def adduser_usage(): + print '\nUsage: adduser -u username -p password -m email' + + +def adduser_parser_setup(subparser): + subparser.add_argument( + '-u', '--username', + help="Username used to login") + subparser.add_argument( + '-p', '--password', + help="Your supersecret word to login") + subparser.add_argument( + '-m', '--email', + help="Email to recieve notifications") + subparser.add_argument( + '-cf', '--conf_file', default='mediagoblin.ini', + help="Config file used to set up environment") + + +def adduser(args): + #TODO: Lets trust admins this do not validate Emails :) + if args.username == None : + print 'You must provide an username' + adduser_usage() + elif args.password == None: + print 'You must provide a password' + adduser_usage() + elif args.email == None: + print 'You must provide an email' + adduser_usage() + else: + mgoblin_app = commands_util.setup_app(args) + + db = mg_globals.database + users_with_username = \ + db.User.find({ + 'username': args.username.lower() + }).count() + + if users_with_username: + print u'Sorry, a user with that name already exists.' + + else: + # Create the user + entry = db.User() + entry['username'] = unicode(args.username.lower()) + entry['email'] = unicode(args.email) + entry['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password) + entry['email_verified'] = True + entry.save(validate=True) + + print "User Created: Already Verified :)" + + +def makeadmin_usage(): + print '\nUsage: makeadmin -u username' + + +def makeadmin_parser_setup(subparser): + subparser.add_argument( + '-u', '--username', + help="Username to give admin level") + subparser.add_argument( + '-cf', '--conf_file', default='mediagoblin.ini', + help="Config file used to set up environment") + + +def makeadmin(args): + if args.username == None: + print 'You must provide an username' + makeadmin_usage() + else: + mgoblin_app = commands_util.setup_app(args) + + db = mg_globals.database + + user = db.User.one({'username':unicode(args.username.lower())}) + if user: + user['is_admin'] = True + user.save() + print 'The user is now Admin' + else: + print 'The user doesn\'t exist' + + +def changepw_usage(): + print '\nUsage: changepw -u username -p new_password' + + +def changepw_parser_setup(subparser): + subparser.add_argument( + '-u', '--username', + help="Username used to login") + subparser.add_argument( + '-p', '--password', + help="Your NEW supersecret word to login") + subparser.add_argument( + '-cf', '--conf_file', default='mediagoblin.ini', + help="Config file used to set up environment") + + +def changepw(args): + if args.username == None: + print 'You must provide an username' + adduser_usage() + elif args.password == None: + print 'You must provide a password' + adduser_usage() + else: + mgoblin_app = commands_util.setup_app(args) + + db = mg_globals.database + + user = db.User.one({'username':unicode(args.username.lower())}) + if user: + user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password) + user.save() + print 'Password successfully changed' + else: + print 'The user doesn\'t exist' + |