changeset 2008:9ddbfaeefb73 beta

API: allowed password field to be null when used with ldap_dn ref #362 - added errors about non unique email to create_user api function
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 21 Feb 2012 01:18:00 +0200
parents 324ac367a4da
children b63adad7c4af
files rhodecode/controllers/api/api.py
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/api/api.py	Mon Feb 20 23:00:54 2012 +0200
+++ b/rhodecode/controllers/api/api.py	Tue Feb 21 01:18:00 2012 +0200
@@ -28,18 +28,15 @@
 import traceback
 import logging
 
-from sqlalchemy.orm.exc import NoResultFound
-
 from rhodecode.controllers.api import JSONRPCController, JSONRPCError
 from rhodecode.lib.auth import HasPermissionAllDecorator, \
-    HasPermissionAnyDecorator
+    HasPermissionAnyDecorator, PasswordGenerator
 
 from rhodecode.model.meta import Session
 from rhodecode.model.scm import ScmModel
 from rhodecode.model.db import User, UsersGroup, RepoGroup, Repository
 from rhodecode.model.repo import RepoModel
 from rhodecode.model.user import UserModel
-from rhodecode.model.repo_permission import RepositoryPermissionModel
 from rhodecode.model.users_group import UsersGroupModel
 from rhodecode.model.repos_group import ReposGroupModel
 
@@ -131,7 +128,7 @@
         return result
 
     @HasPermissionAllDecorator('hg.admin')
-    def create_user(self, apiuser, username, password, email, firstname=None,
+    def create_user(self, apiuser, username, email, password, firstname=None,
                     lastname=None, active=True, admin=False, ldap_dn=None):
         """
         Create new user
@@ -149,6 +146,13 @@
         if User.get_by_username(username):
             raise JSONRPCError("user %s already exist" % username)
 
+        if User.get_by_email(email, case_insensitive=True):
+            raise JSONRPCError("email %s already exist" % email)
+
+        if ldap_dn:
+            # generate temporary password if ldap_dn
+            password = PasswordGenerator().gen_password(length=8)
+
         try:
             usr = UserModel().create_or_update(
                 username, password, email, firstname,