예제 #1
0
    def is_user_an_admin(user_id: int) -> bool:
        """ Is the user an admin """
        user = UserService.get_user_by_id(user_id)
        if UserRole(user.role) == UserRole.ADMIN:
            return True

        return False
예제 #2
0
    def is_user_blocked(user_id: int) -> bool:
        """ Determines if a user is blocked """
        user = UserService.get_user_by_id(user_id)

        if UserRole(user.role) == UserRole.READ_ONLY:
            return True

        return False
예제 #3
0
    def is_user_validator(user_id: int) -> bool:
        """ Determines if user is a validator """
        user = UserService.get_user_by_id(user_id)

        if UserRole(user.role) in [
                UserRole.ADMIN,
        ]:
            return True

        return False
예제 #4
0
    def add_role_to_user(admin_user_id: int, username: str, role: str):
        """
        Add role to user
        :param admin_user_id: ID of admin attempting to add the role
        :param username: Username of user the role should be added to
        :param role: The requested role
        :raises UserServiceError
        """
        try:
            requested_role = UserRole[role.upper()]
        except KeyError:
            raise UserServiceError(
                f"Unknown role {role} accepted values are ADMIN, PROJECT_MANAGER, VALIDATOR"
            )

        admin = UserService.get_user_by_id(admin_user_id)
        admin_role = UserRole(admin.role)

        if admin_role != UserRole.ADMIN and requested_role == UserRole.ADMIN:
            raise UserServiceError("You must be an Admin to assign Admin role")

        user = UserService.get_user_by_username(username)
        user.set_user_role(requested_role)