def handle_post(self, request, user, *args, **kwargs): """Treat requests POST to add user. URL: user/ """ try: self.log.info('Add User') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Load XML data xml_map, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error(3, u'There is no value to the networkapi tag of XML request.') user_map = networkapi_map.get('user') if user_map is None: return self.response_error(3, u'There is no value to the user tag of XML request.') # Get XML data username = user_map.get('user') password = user_map.get('password') name = user_map.get('name') email = user_map.get('email') user_ldap = user_map.get('user_ldap') # Valid username if not is_valid_string_minsize(username, 3) or not is_valid_string_maxsize(username, 45): self.log.error( u'Parameter user is invalid. Value: %s', username) raise InvalidValueError(None, 'user', username) # Valid pwd if not is_valid_string_minsize(password, 3) or not is_valid_string_maxsize(password, 45): self.log.error(u'Parameter password is invalid. Value: ****') raise InvalidValueError(None, 'password', '****') # Valid name if not is_valid_string_minsize(name, 3) or not is_valid_string_maxsize(name, 200): self.log.error(u'Parameter name is invalid. Value: %s', name) raise InvalidValueError(None, 'name', name) # Valid email if not is_valid_string_minsize(email, 3) or not is_valid_string_maxsize(email, 200) or not is_valid_email(email): self.log.error(u'Parameter email is invalid. Value: %s', email) raise InvalidValueError(None, 'email', email) # Valid LDAP username if user_ldap is not None: if not is_valid_string_minsize(user_ldap, 3) or not is_valid_string_maxsize(user_ldap, 45): self.log.error( u'Parameter user_ldap is invalid. Value: %s', user_ldap) raise InvalidValueError(None, 'user_ldap', user_ldap) try: Usuario.get_by_user(username) raise UsuarioNameDuplicatedError( None, u'Já existe um usuário com o valor user %s.' % username) except UsuarioNotFoundError: pass usr = Usuario() # set variables usr.user = username usr.pwd = Usuario.encode_password(password) usr.nome = name usr.email = email usr.ativo = True usr.user_ldap = user_ldap try: # save User usr.save() except Exception, e: self.log.error(u'Failed to save the user.') raise UsuarioError(e, u'Failed to save the user.') perm_map = dict() perm_map['usuario'] = model_to_dict( usr, exclude=['user', 'nome', 'pwd', 'name', 'email']) return self.response(dumps_networkapi(perm_map))
def handle_post(self, request, user, *args, **kwargs): """Treat requests POST to add user. URL: user/ """ try: self.log.info('Add User') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Load XML data xml_map, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error( 3, u'There is no value to the networkapi tag of XML request.' ) user_map = networkapi_map.get('user') if user_map is None: return self.response_error( 3, u'There is no value to the user tag of XML request.') # Get XML data username = user_map.get('user') password = user_map.get('password') name = user_map.get('name') email = user_map.get('email') user_ldap = user_map.get('user_ldap') # Valid username if not is_valid_string_minsize( username, 3) or not is_valid_string_maxsize(username, 45): self.log.error(u'Parameter user is invalid. Value: %s', username) raise InvalidValueError(None, 'user', username) # Valid pwd if not is_valid_string_minsize( password, 3) or not is_valid_string_maxsize(password, 45): self.log.error(u'Parameter password is invalid. Value: ****') raise InvalidValueError(None, 'password', '****') # Valid name if not is_valid_string_minsize( name, 3) or not is_valid_string_maxsize(name, 200): self.log.error(u'Parameter name is invalid. Value: %s', name) raise InvalidValueError(None, 'name', name) # Valid email if not is_valid_string_minsize( email, 3) or not is_valid_string_maxsize( email, 200) or not is_valid_email(email): self.log.error(u'Parameter email is invalid. Value: %s', email) raise InvalidValueError(None, 'email', email) # Valid LDAP username if user_ldap is not None: if not is_valid_string_minsize( user_ldap, 3) or not is_valid_string_maxsize( user_ldap, 45): self.log.error( u'Parameter user_ldap is invalid. Value: %s', user_ldap) raise InvalidValueError(None, 'user_ldap', user_ldap) try: Usuario.get_by_user(username) raise UsuarioNameDuplicatedError( None, u'Já existe um usuário com o valor user %s.' % username) except UsuarioNotFoundError: pass usr = Usuario() # set variables usr.user = username usr.pwd = Usuario.encode_password(password) usr.nome = name usr.email = email usr.ativo = True usr.user_ldap = user_ldap try: # save User usr.save() except Exception, e: self.log.error(u'Failed to save the user.') raise UsuarioError(e, u'Failed to save the user.') perm_map = dict() perm_map['usuario'] = model_to_dict( usr, exclude=['user', 'nome', 'pwd', 'name', 'email']) return self.response(dumps_networkapi(perm_map))
def handle_put(self, request, user, *args, **kwargs): """Treat requests PUT to edit User. URL: user/<id_user>/ """ try: self.log.info('Edit User') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_user = kwargs.get('id_user') # Load XML data xml_map, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error(3, u'There is no value to the networkapi tag of XML request.') user_map = networkapi_map.get('user') if user_map is None: return self.response_error(3, u'There is no value to the user tag of XML request.') # Get XML data username = user_map.get('user') password = user_map.get('password') name = user_map.get('name') email = user_map.get('email') active = user_map.get('active') user_ldap = user_map.get('user_ldap') # Valid ID User if not is_valid_int_greater_zero_param(id_user): self.log.error( u'The id_user parameter is not a valid value: %s.', id_user) raise InvalidValueError(None, 'id_user', id_user) # Valid username if not is_valid_string_minsize(username, 3) or not is_valid_string_maxsize(username, 45): self.log.error( u'Parameter user is invalid. Value: %s', username) raise InvalidValueError(None, 'user', username) # Valid pwd if not is_valid_string_minsize(password, 3) or not is_valid_string_maxsize(password, 45): self.log.error(u'Parameter password is invalid. Value: ****') raise InvalidValueError(None, 'password', '****') # Valid name if not is_valid_string_minsize(name, 3) or not is_valid_string_maxsize(name, 200): self.log.error(u'Parameter name is invalid. Value: %s', name) raise InvalidValueError(None, 'name', name) # Valid email if not is_valid_string_minsize(email, 3) or not is_valid_string_maxsize(email, 200) or not is_valid_email(email): self.log.error(u'Parameter email is invalid. Value: %s', email) raise InvalidValueError(None, 'email', email) # Valid active if not is_valid_boolean_param(active): self.log.error( u'The active parameter is not a valid value: %s.', active) raise InvalidValueError(None, 'active', active) # Valid LDAP username if not is_valid_string_minsize(user_ldap, 3, False) or not is_valid_string_maxsize(user_ldap, 45, False): self.log.error( u'Parameter user_ldap is invalid. Value: %s', user_ldap) raise InvalidValueError(None, 'user_ldap', user_ldap) # Find User by ID to check if it exist usr = Usuario.get_by_pk(id_user) with distributedlock(LOCK_USER % id_user): try: if usr.user.lower() != username.lower(): Usuario.get_by_user(username) raise UsuarioNameDuplicatedError( None, u'Já existe um usuário com o valor user %s.' % username) except UsuarioNotFoundError: pass # set variables usr.user = username usr.pwd = password usr.nome = name usr.email = email usr.ativo = convert_string_or_int_to_boolean(active) usr.user_ldap = user_ldap try: # update User usr.save() except Exception, e: self.log.error(u'Failed to update the user.') raise UsuarioError(e, u'Failed to update the user.') return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_put(self, request, user, *args, **kwargs): """Treat requests PUT to edit User. URL: user/<id_user>/ """ try: self.log.info('Edit User') # User permission if not has_perm(user, AdminPermission.USER_ADMINISTRATION, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) id_user = kwargs.get('id_user') # Load XML data xml_map, attrs_map = loads(request.raw_post_data) # XML data format networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error( 3, u'There is no value to the networkapi tag of XML request.' ) user_map = networkapi_map.get('user') if user_map is None: return self.response_error( 3, u'There is no value to the user tag of XML request.') # Get XML data username = user_map.get('user') password = user_map.get('password') name = user_map.get('name') email = user_map.get('email') active = user_map.get('active') user_ldap = user_map.get('user_ldap') # Valid ID User if not is_valid_int_greater_zero_param(id_user): self.log.error( u'The id_user parameter is not a valid value: %s.', id_user) raise InvalidValueError(None, 'id_user', id_user) # Valid username if not is_valid_string_minsize( username, 3) or not is_valid_string_maxsize(username, 45): self.log.error(u'Parameter user is invalid. Value: %s', username) raise InvalidValueError(None, 'user', username) # Valid pwd if not is_valid_string_minsize( password, 3) or not is_valid_string_maxsize(password, 45): self.log.error(u'Parameter password is invalid. Value: ****') raise InvalidValueError(None, 'password', '****') # Valid name if not is_valid_string_minsize( name, 3) or not is_valid_string_maxsize(name, 200): self.log.error(u'Parameter name is invalid. Value: %s', name) raise InvalidValueError(None, 'name', name) # Valid email if not is_valid_string_minsize( email, 3) or not is_valid_string_maxsize( email, 200) or not is_valid_email(email): self.log.error(u'Parameter email is invalid. Value: %s', email) raise InvalidValueError(None, 'email', email) # Valid active if not is_valid_boolean_param(active): self.log.error( u'The active parameter is not a valid value: %s.', active) raise InvalidValueError(None, 'active', active) # Valid LDAP username if not is_valid_string_minsize( user_ldap, 3, False) or not is_valid_string_maxsize( user_ldap, 45, False): self.log.error(u'Parameter user_ldap is invalid. Value: %s', user_ldap) raise InvalidValueError(None, 'user_ldap', user_ldap) # Find User by ID to check if it exist usr = Usuario.get_by_pk(id_user) with distributedlock(LOCK_USER % id_user): try: if usr.user.lower() != username.lower(): Usuario.get_by_user(username) raise UsuarioNameDuplicatedError( None, u'Já existe um usuário com o valor user %s.' % username) except UsuarioNotFoundError: pass # set variables usr.user = username usr.pwd = password usr.nome = name usr.email = email usr.ativo = convert_string_or_int_to_boolean(active) usr.user_ldap = user_ldap try: # update User usr.save() except Exception, e: self.log.error(u'Failed to update the user.') raise UsuarioError(e, u'Failed to update the user.') return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)