def domain_acquire(self, request): user = self.authenticate(request) validator = Validator(request) user_domain = validator.new_user_domain() device_mac_address = validator.device_mac_address() device_name = validator.string('device_name', required=True) device_title = validator.string('device_title', required=True) check_validator(validator) with self.create_storage() as storage: domain = storage.get_domain_by_name(user_domain) if domain and domain.user_id != user.id: raise servicesexceptions.parameter_error( 'user_domain', 'User domain name is already in use') update_token = util.create_token() if not domain: domain = Domain(user_domain, device_mac_address, device_name, device_title, update_token=update_token) domain.user = user storage.add(domain) else: domain.update_token = update_token domain.device_mac_address = device_mac_address domain.device_name = device_name domain.device_title = device_title return domain
def domain_acquire(self, request): user = self.authenticate(request) validator = Validator(request) user_domain = validator.new_user_domain() device_mac_address = validator.device_mac_address() device_name = validator.string('device_name', required=True) device_title = validator.string('device_title', required=True) check_validator(validator) with self.create_storage() as storage: domain = storage.get_domain_by_name(user_domain) if domain and domain.user_id != user.id: raise servicesexceptions.parameter_error('user_domain', 'User domain name is already in use') update_token = util.create_token() if not domain: domain = Domain(user_domain, device_mac_address, device_name, device_title, update_token=update_token) domain.user = user storage.add(domain) else: domain.update_token = update_token domain.device_mac_address = device_mac_address domain.device_name = device_name domain.device_title = device_title return domain
def create_new_user(self, request): validator = Validator(request) email = validator.email() password = validator.password() user_domain = validator.new_user_domain(error_if_missing=False) errors = validator.errors if errors: message = ", ".join(errors) raise servicesexceptions.bad_request(message) user = None action = None with self.create_storage() as storage: by_email = storage.get_user_by_email(email) if by_email and by_email.email == email: raise servicesexceptions.conflict('Email is already registered') if user_domain: by_domain = storage.get_domain_by_name(user_domain) if by_domain and by_domain.user_domain == user_domain: raise servicesexceptions.conflict('User domain name is already in use') update_token = util.create_token() user = User(email, util.hash(password), not self.activate_by_email) if user_domain: domain = Domain(user_domain, None, update_token) domain.user = user user.domains.append(domain) storage.add(domain) if self.activate_by_email: action = user.enable_action(ActionType.ACTIVATE) storage.add(user) if self.activate_by_email: self.mail.send_activate(self.main_domain, user.email, action.token) return user
def domain_acquire(self, request): user = self.authenticate(request) validator = Validator(request) user_domain = validator.new_user_domain() with self.create_storage() as storage: domain = storage.get_domain_by_name(user_domain) if domain and domain.user_id != user.id: raise servicesexceptions.conflict('User domain name is already in use') update_token = util.create_token() if not domain: domain = Domain(user_domain, None, update_token) domain.user = user storage.add(domain) else: domain.update_token = update_token return domain
def drop_device(self, request): user = self.authenticate(request) validator = Validator(request) user_domain = validator.new_user_domain() check_validator(validator) with self.create_storage() as storage: domain = storage.get_domain_by_name(user_domain) if not domain or not domain.user.active: raise servicesexceptions.bad_request('Unknown domain') domain.update_token = None domain.device_mac_address = None domain.device_name = None domain.device_title = None domain.ip = None domain.local_ip = None self.dns.delete_domain(self.main_domain, domain) return domain