Ejemplo n.º 1
0
    def update_user(self,
                    me,
                    uid,
                    email,
                    real_name,
                    password,
                    newpass1,
                    newpass2,
                    bio,
                    status,
                    role='user'):
        real_name, newpass1, newpass2, bio = real_name.strip(), newpass1.strip(
        ), newpass2.strip(), bio.strip()
        errors = []

        if not self.check_email(email):
            errors.append(text('user.email_missing'))

        if errors:
            return {'status': 'error', 'errors': errors}

        user = self.repo.find(uid)
        if not user:
            return {'status': 'error', 'errors': 'User not Found'}

        if me.uid == user.uid:
            if re.match(r'[A-Za-z0-9@#$%^&+=]{4,16}', newpass1):
                if password and newpass1 and newpass1 == newpass2 and user.check(
                        password):
                    user.secure_pass = newpass1
            elif newpass1:
                errors.append(text('users.password_missing'))

            if self.check_email(email):
                user_ = self.repo.find_by_email(email)
                if user_ and user_.uid != user.uid:
                    errors.append(text('user.email_used'))
                else:
                    user.email = email

        if errors:
            return {'status': 'error', 'errors': errors}

        account = Account.fromUser(user)
        if me.is_root() or me.uid == uid:
            if me.is_root() and not account.is_root():
                if role in (Account.ADMIN, Account.USER, Account.EDITOR):
                    user.role = role
                if user.status != status and status in Account.STATUSES:
                    user.status = status

            if user.real_name != real_name:
                user.real_name = real_name

            if user.bio != bio:
                user.bio = bio

        self.repo.save(user)
        return {'status': 'ok', 'msg': 'updated', 'user': user}
Ejemplo n.º 2
0
    def delete(self, me, user_id):
        user = self.repo.find(user_id)

        if not user:
            return
        account = Account.fromUser(user)
        if account.is_root():
            return 
        if me.is_root():
            return self.repo.delete(user)
Ejemplo n.º 3
0
    def delete(self, me, user_id):
        user = self.repo.find(user_id)

        if not user:
            return
        account = Account.fromUser(user)
        if account.is_root():
            return
        if me.is_root():
            return self.repo.delete(user)
Ejemplo n.º 4
0
    def update_user(self, me, uid, email, real_name, password, newpass1, newpass2, bio, status, role='user'):
        real_name, newpass1, newpass2, bio = real_name.strip(), newpass1.strip(), newpass2.strip(), bio.strip()
        errors = []

        if not self.check_email(email):
            errors.append(text('user.email_missing'))

        if errors:
            return {'status': 'error', 'errors': errors}

        user = self.repo.find(uid)
        if not user:
            return {'status': 'error', 'errors': 'User not Found'}

        if me.uid == user.uid:
            if re.match(r'[A-Za-z0-9@#$%^&+=]{4,16}', newpass1):
                if password and newpass1 and newpass1 == newpass2 and user.check(password):
                    user.secure_pass = newpass1
            elif newpass1:
                errors.append(text('users.password_missing'))

            if self.check_email(email):
                user_ = self.repo.find_by_email(email)
                if user_ and user_.uid != user.uid:
                    errors.append(text('user.email_used'))
                else:
                    user.email = email

        if errors:
            return {'status': 'error', 'errors': errors}

        account = Account.fromUser(user)
        if me.is_root() or me.uid == uid:
            if me.is_root() and not account.is_root():
                if role in (Account.ADMIN, Account.USER, Account.EDITOR):
                    user.role = role
                if user.status != status and status in Account.STATUSES:
                    user.status = status

            if user.real_name != real_name:
                user.real_name = real_name

            if user.bio != bio:
                user.bio = bio

        self.repo.save(user)
        return {'status': 'ok', 'msg': 'updated', 'user': user}