def process_change_username(self, message): """ :type message: dict """ self.logger.info("!! Changing username to %s", message[CONTENT_VAR_NAME]) new_username = message[CONTENT_VAR_NAME] try: check_user(new_username) online = self.get_online_from_redis() if new_username in online: self.logger.info("!! This name is already used") raise ValidationError("Anonymous already has this name") session_key = self.get_cookie(settings.SESSION_COOKIE_NAME) session = session_engine.SessionStore(session_key) session[SESSION_USER_VAR_NAME] = new_username session.save() del online[self.sender_name] old_name = self.sender_name old_channel = self.channel self.sender_name = new_username # change_user_name required new_username in sender_name online.update(self.online_self_js_structure) message_all = self.change_user_nickname(old_name, online) message_me = self.default(new_username, GET_MINE_USERNAME_EVENT) # TODO perform ton of checks or emit twice ? self.publish(message_me, self.channel) # to new user channel self.publish(message_me, old_channel) # to old user channel self.publish(message_all) except ValidationError as e: self.safe_write(self.default(str(e.message)))
def register(request): try: rp = request.POST (username, password, email, verify_email) = ( rp.get('username'), rp.get('password'), rp.get('email'), rp.get('mailbox')) check_user(username) check_password(password) check_email(email, verify_email == 'on') user = UserProfile(username=username, email=email, sex_str=rp.get('sex')) user.set_password(password) default_thread, created_default = Room.objects.get_or_create(name=ANONYMOUS_REDIS_ROOM) registered_only, created_registered = Room.objects.get_or_create(name=REGISTERED_REDIS_ROOM) user.save() user.rooms.add(default_thread) user.rooms.add(registered_only) user.save() logger.info('Signed up new user %s, subscribed for channels %s', user, user.rooms) # You must call authenticate before you can call login auth_user = authenticate(username=username, password=password) djangologin(request, auth_user) # register,js redirect if message = 'Account created' message = settings.VALIDATION_IS_OK if verify_email == 'Y': send_email_verification(user, request.get_host()) except ValidationError as e: message = e.message return HttpResponse(message, content_type='text/plain')
def validate_user(request): """ Validates user during registration """ try: username = request.POST.get('username') registration_utils.check_user(username) # hardcoded ok check in register.js message = settings.VALIDATION_IS_OK except ValidationError as e: message = e.message return HttpResponse(message, content_type='text/plain')
def test_check_user(self): self.assertRaises(ValidationError, check_user, "d"*100) self.assertRaises(ValidationError, check_user, "asdfs,+") check_user("Fine")