示例#1
0
def channel_addowner(token, channel_id, u_id):
    global channels

    try:
        # Get user information
        userID = decodeToken(token)
        users = getUser(int(u_id))
        target = {'u_id':int(u_id), 'name_first':users['name_first'], 'name_last':users['name_last'], "profile_img_url": users['profile_img_url']}
        grantusers = getUser(userID)
        granter = {'u_id':userID, 'name_first':grantusers['name_first'], 'name_last':grantusers['name_last'], "profile_img_url": grantusers['profile_img_url']}
        permissions = grantusers['permission_id']

        # Channel operations
        channel = getChannel(channel_id)
        if granter in channel['owner_members'] or permissions < 3:
            if target in channel['owner_members']:
                raise ValueError("User already an owner")
            elif target in channel['all_members']:
                channel['owner_members'].append(target)
                return {}
            else:
                channel['owner_members'].append(target)
                channel['all_members'].append(target)
                return {}
        raise AccessError("User is not an owner")

    except ValueError as e:
        raise e
    except AccessError as e:
        raise e
示例#2
0
def channel_join(token, channel_id):
    global channels
    try:
        # Get user information
        u_id = decodeToken(token)
        users = getUser(u_id)
        permission = users['permission_id']
        userDetails = {
            "u_id": u_id,
            "name_first": users['name_first'],
            "name_last": users['name_last'],
            "profile_img_url": users['profile_img_url']
        }

        # Channel operations
        channel = getChannel(channel_id)
        if not channel[
                'is_public'] and permission == 3:  #Checks if channel is public
            raise AccessError("You do not have access to this channel")
        else:
            channel['all_members'].append(userDetails)
            if userDetails not in channel['owner_members'] and permission < 3:
                channel['owner_members'].append(userDetails)
            return {}

    except ValueError as e:
        raise e
    except AccessError as e:
        raise e
示例#3
0
def admin_userpermission_change(token, u_id, permission_id):
    
    try:
        # Check if user is authenticated and get the requesting user ID from token
        granterID = decodeToken(token)

        # Check if the target uID format is valid
        if not u_id.isdigit():
            raise ValueError("Invalid user ID!")

        # Check if the target permission ID is valid
        if int(permission_id) > 3 or int(permission_id) < 1:
            raise ValueError("Invalid permission id")

        # Find the requesting user
        permissions = getUser(granterID)['permission_id']

        # Check if requesting user has permissions for the action
        if permissions < 3:
            setPermission(u_id, permission_id)
            return {}
        raise AccessError("Granter is not an admin or owner")     
        
    except ValueError as e:
        raise e
    except AccessError as e:
        raise e 
示例#4
0
def channels_create(token, name, is_public):
    try:
        if len(name) > 20:
            raise ValueError("Name must be 20 characters or less.")

        # Get user information
        channel_id = len(channels)
        u_id = decodeToken(token)
        users = getUser(u_id)
        name_first = users['name_first']
        name_last = users['name_last']
        profile_img_url = users['profile_img_url']

        owner_members = [{
            "u_id": u_id,
            "name_first": name_first,
            "name_last": name_last,
            "profile_img_url": profile_img_url
        }]
        all_members = [{
            "u_id": u_id,
            "name_first": name_first,
            "name_last": name_last,
            "profile_img_url": profile_img_url
        }]

        newChannel(channel_id, name, is_public, owner_members, all_members)
        return channel_id

    except ValueError as e:
        raise e
    except AccessError as e:
        raise e
示例#5
0
def channel_invite(token, channel_id, u_id):
    try:
        # Get user information
        userID = decodeToken(token)
        grant_user = getUser(userID)
        granter = {'u_id':userID, 'name_first':grant_user['name_first'], 'name_last':grant_user['name_last'], "profile_img_url": grant_user['profile_img_url']}
        target_user = getUser(int(u_id))
        target = {'u_id':int(u_id), 'name_first':target_user['name_first'], 'name_last':target_user['name_last'], 'profile_img_url': target_user['profile_img_url']}

        # Can't invite yourself...
        if granter == target:
            raise ValueError("Can't invite yourself!")

        # Channel operations
        channel = getChannel(channel_id)
        if granter in channel['all_members']:
            channel['all_members'].append(target)
            return {}
        raise AccessError("User not a member of channel")
                    
    except ValueError as e:
        raise e
    except AccessError as e:
        raise e
示例#6
0
def channel_details(token, channel_id):
    try:
        # Get user details
        u_id = decodeToken(token)
        user = getUser(u_id)
        permissions = user['permission_id']

        # Get channel details
        channel = getChannel(channel_id)
        if channel['is_public'] == 'true' or permissions < 3:
            return {
                "name": channel['name'],
                "owner_members": channel['owner_members'],
                "all_members": channel['all_members']
            }
        raise AccessError("User is not member of channel")

    except ValueError as e:
        raise e
    except AccessError as e:
        raise e
示例#7
0
def message_edit(token, message_id, new_message):
    global channels

    try:
        u_id = decodeToken(token)
        message = getMessage(message_id)
        channel = getMessageChannel(message_id)
        if message["u_id"] == u_id: #check if user is the sender
            doEdit(message, new_message, token)
            return {}        
        for members in channel["owner_members"]: #user is owner of channel
            if members["u_id"] == u_id:
                doEdit(message, new_message, token)
                return {}
        users = getUser(u_id) #user is admin
        if users["permission_id"] == 1 or users["permission_id"] == 2:
            doEdit(message, new_message, token)
            return {}
        raise AccessError("User does not have permission to edit message!")

    except ValueError as e:
        raise e
    except AccessError as e:
        raise e