[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: authenticator:
default: default:
vendor: ldap vendor: ldap
help: Admin Password help: admin_password
parameters: parameters:
uri: ldap://localhost:389 uri: ldap://localhost:389
base_dn: dc=yunohost,dc=org base_dn: dc=yunohost,dc=org
@ -95,34 +95,43 @@ user:
configuration: configuration:
authenticate: all authenticate: all
arguments: arguments:
-u: username:
full: --username help: The unique username to create
help: Must be unique
extra: extra:
ask: "Username"
pattern: pattern:
- '^[a-z0-9_]+$' - '^[a-z0-9_]+$'
- "Must be alphanumeric and underscore characters only" - pattern_username
-f: -f:
full: --firstname full: --firstname
extra: extra:
ask: "Firstname" ask: ask_firstname
required: True
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_firstname
-l: -l:
full: --lastname full: --lastname
extra: extra:
ask: "Lastname" ask: ask_lastname
required: True
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_lastname
-m: -m:
full: --mail full: --mail
help: Main mail address must be unique help: Main unique email address
extra: extra:
ask: "Mail address" ask: ask_email
required: True
pattern: pattern:
- '^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$' - '^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
- "Must be a valid email address (e.g. someone@domain.org)" - pattern_email
-p: -p:
full: --password full: --password
help: User password
extra: extra:
password: "User password" password: ask_password
required: True
### user_delete() ### user_delete()
delete: delete:
@ -131,15 +140,12 @@ user:
configuration: configuration:
authenticate: all authenticate: all
arguments: arguments:
-u: username:
full: --users help: Username to delete
help: Username of users to delete
nargs: "*"
extra: extra:
ask: "Users to delete"
pattern: pattern:
- '^[a-z0-9_]+$' - '^[a-z0-9_]+$'
- "Must be alphanumeric and underscore characters only" - pattern_username
--purge: --purge:
action: store_true action: store_true
@ -151,13 +157,25 @@ user:
authenticate: all authenticate: all
arguments: arguments:
username: username:
help: Username of user to update help: Username to update
-f: -f:
full: --firstname full: --firstname
extra:
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_firstname
-l: -l:
full: --lastname full: --lastname
extra:
pattern:
- "^([^\\W\\d_]{2,30}[ ,.']{0,3})+$"
- pattern_lastname
-m: -m:
full: --mail full: --mail
extra:
pattern:
- '^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
- pattern_email
-p: -p:
full: --change-password full: --change-password
help: New password to set help: New password to set
@ -181,14 +199,14 @@ user:
### user_info() ### user_info()
info: info:
action_help: Get user informations action_help: Get user information
api: GET /users/<username> api: GET /users/<username>
configuration: configuration:
authenticate: all authenticate: all
authenticator: ldap-anonymous authenticator: ldap-anonymous
arguments: arguments:
username: 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_deleted" : "User successfully deleted",
"user_update_failed" : "Unable to update user", "user_update_failed" : "Unable to update user",
"user_updated" : "User successfully updated", "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_deleted" : "Utilisateur supprimé avec succès",
"user_update_failed" : "Impossible de modifier l'utilisateur", "user_update_failed" : "Impossible de modifier l'utilisateur",
"user_updated" : "Utilisateur modifié avec succès", "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')) raise MoulinetteError(169, m18n.n('user_creation_failed'))
def user_delete(auth, users, purge=False): def user_delete(auth, username, purge=False):
""" """
Delete user Delete user
Keyword argument: Keyword argument:
users -- Username of users to delete username -- Username to delete
purge purge
""" """
from yunohost.app import app_ssowatconf from yunohost.app import app_ssowatconf
if not isinstance(users, list): if auth.remove('uid=%s,ou=users' % username):
users = [ users ] # Update SFTP user group
deleted = [] memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
try: memberlist.remove(username)
for user in users: except: pass
if auth.remove('uid=%s,ou=users' % user): if auth.update('cn=sftpusers,ou=groups', { 'memberUid': memberlist }):
# Update SFTP user group if purge:
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid'] os.system('rm -rf /home/%s' % username)
try: memberlist.remove(user) else:
except: pass raise MoulinetteError(169, m18n.n('user_deletion_failed'))
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'))
app_ssowatconf(auth) app_ssowatconf(auth)
msignals.display(m18n.n('user_deleted'), 'success') 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): 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):