[enh] Review user actions and actionsmap to fit to moulinette

This commit is contained in:
Jérôme Lebleu 2014-06-02 21:18:20 +02:00
parent 2b7881a44a
commit 3815bb5557
4 changed files with 73 additions and 43 deletions

View file

@ -39,7 +39,7 @@ _global:
authenticator:
default:
vendor: ldap
help: Admin Password
help: admin_password
parameters:
uri: ldap://localhost:389
base_dn: dc=yunohost,dc=org
@ -95,34 +95,43 @@ user:
configuration:
authenticate: all
arguments:
-u:
full: --username
help: Must be unique
username:
help: The unique username to create
extra:
ask: "Username"
pattern:
- '^[a-z0-9_]+$'
- "Must be alphanumeric and underscore characters only"
- pattern_username
-f:
full: --firstname
extra:
ask: "Firstname"
ask: ask_firstname
required: True
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_firstname
-l:
full: --lastname
extra:
ask: "Lastname"
ask: ask_lastname
required: True
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_lastname
-m:
full: --mail
help: Main mail address must be unique
help: Main unique email address
extra:
ask: "Mail address"
ask: ask_email
required: True
pattern:
- '^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
- "Must be a valid email address (e.g. someone@domain.org)"
- pattern_email
-p:
full: --password
help: User password
extra:
password: "User password"
password: ask_password
required: True
### user_delete()
delete:
@ -131,15 +140,12 @@ user:
configuration:
authenticate: all
arguments:
-u:
full: --users
help: Username of users to delete
nargs: "*"
username:
help: Username to delete
extra:
ask: "Users to delete"
pattern:
- '^[a-z0-9_]+$'
- "Must be alphanumeric and underscore characters only"
- pattern_username
--purge:
action: store_true
@ -151,13 +157,25 @@ user:
authenticate: all
arguments:
username:
help: Username of user to update
help: Username to update
-f:
full: --firstname
extra:
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_firstname
-l:
full: --lastname
extra:
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_lastname
-m:
full: --mail
extra:
pattern:
- '^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
- pattern_email
-p:
full: --change-password
help: New password to set
@ -181,14 +199,14 @@ user:
### user_info()
info:
action_help: Get user informations
action_help: Get user information
api: GET /users/<username>
configuration:
authenticate: all
authenticator: ldap-anonymous
arguments:
username:
help: Username or mail to get informations
help: Username or email to get information
#############################

View file

@ -134,6 +134,16 @@
"user_deleted" : "User successfully deleted",
"user_update_failed" : "Unable to update user",
"user_updated" : "User successfully updated",
"user_info_failed" : "Unable to retrieve user information"
"user_info_failed" : "Unable to retrieve user information",
"admin_password" : "Administration password",
"ask_firstname" : "First name",
"ask_lastname" : "Last name",
"ask_email" : "Email address",
"ask_password" : "Password",
"pattern_username" : "Must be alphanumeric and underscore characters only",
"pattern_firstname" : "Must be a valid first name",
"pattern_lastname" : "Must be a valid last name",
"pattern_email" : "Must be a valid email address (e.g. someone@domain.org)"
}

View file

@ -134,6 +134,16 @@
"user_deleted" : "Utilisateur supprimé avec succès",
"user_update_failed" : "Impossible de modifier l'utilisateur",
"user_updated" : "Utilisateur modifié avec succès",
"user_info_failed" : "Impossible de récupérer les informations de l'utilisateur"
"user_info_failed" : "Impossible de récupérer les informations de l'utilisateur",
"admin_password" : "Mot de passe d'administration",
"ask_firstname" : "Prénom",
"ask_lastname" : "Nom",
"ask_email" : "Adresse mail",
"ask_password" : "Mot de passe",
"pattern_username" : "Doit être composé uniquement de caractères alphanumérique et de tiret bas",
"pattern_firstname" : "Doit être un prénom valide",
"pattern_lastname" : "Doit être un nom valide",
"pattern_email" : "Doit être une adresse mail valide (ex. : someone@domain.org)"
}

32
user.py
View file

@ -186,38 +186,30 @@ def user_create(auth, username, firstname, lastname, mail, password):
raise MoulinetteError(169, m18n.n('user_creation_failed'))
def user_delete(auth, users, purge=False):
def user_delete(auth, username, purge=False):
"""
Delete user
Keyword argument:
users -- Username of users to delete
username -- Username to delete
purge
"""
from yunohost.app import app_ssowatconf
if not isinstance(users, list):
users = [ users ]
deleted = []
for user in users:
if auth.remove('uid=%s,ou=users' % user):
# Update SFTP user group
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
try: memberlist.remove(user)
except: pass
if auth.update('cn=sftpusers,ou=groups', { 'memberUid': memberlist }):
if purge:
os.system('rm -rf /home/%s' % user)
deleted.append(user)
continue
else:
raise MoulinetteError(169, m18n.n('user_deletion_failed'))
if auth.remove('uid=%s,ou=users' % username):
# Update SFTP user group
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
try: memberlist.remove(username)
except: pass
if auth.update('cn=sftpusers,ou=groups', { 'memberUid': memberlist }):
if purge:
os.system('rm -rf /home/%s' % username)
else:
raise MoulinetteError(169, m18n.n('user_deletion_failed'))
app_ssowatconf(auth)
msignals.display(m18n.n('user_deleted'), 'success')
return { 'users': deleted }
def user_update(auth, username, firstname=None, lastname=None, mail=None, change_password=None, add_mailforward=None, remove_mailforward=None, add_mailalias=None, remove_mailalias=None):