def validate_remove(data, token, messageId): if token in data['tokens']: pass else: raise ValueError("invalid token") channel_id = 0 messagereal = False for channel in data['channels']: for message in channel['messages']: if message['message_id'] == messageId: channel_id = channel['channel_id'] messagereal = True if messagereal == False: raise ValueError("cant find message") u_id = getUserFromToken(token) #userIsInChannel(data, channel_id, getUserFromToken(token)) if isUserinChannelbool(data, channel_id, u_id) == False: raise AccessError("User is not in that channel 184msg helper") exists = False ownmessage = False #adminCalling = False adminCalling = isAdminOrOwner(data, u_id) for channel in data['channels']: for message in channel['messages']: if message['message_id'] == messageId: exists = True if message['u_id'] == u_id: ownmessage = True if exists == False: raise ValueError("Invalid IDs") if ownmessage == False: if adminCalling == False: raise AccessError("Not an admin or owner or own message")
def admin_userpermission_change(data, token, u_id, permission_id): # Decode token to match user auth_u_id = getUserFromToken(token) # Check whether auth_u_id has the permission to change for auth_user in data['users']: if auth_user['u_id'] == auth_u_id: if not auth_user['is_admin'] == PERMISSION1 and \ not auth_user['is_admin'] == PERMISSION2: raise AccessError( 'The authorised user is not an admin or owner') # Check permission_id if permission_id != PERMISSION1 and \ permission_id != PERMISSION2 and \ permission_id != PERMISSION3: raise ValueError('permission_id does not refer to a value permission') # Check if u_id (the one that needs to be modified) exists exist = False for user in data['users']: if user['u_id'] == u_id: exist = True user['is_admin'] = permission_id # Raise error if u_id does not exist if exist == False: raise ValueError("u_id does not refer to a valid user")
def userIsInChannel(data, channel_id, auth_u_id): for channel in data['channels']: if channel_id == channel['channel_id']: if str(auth_u_id) in channel['members']: # if str(auth_u_id) in channel['members'] or int(auth_u_id) in channel['members']: return True else: raise AccessError ('Requesting user is not an authorised member of the channel') raise ValueError ('Channel does not exist.')
def joinChannel(data, channel_id, u_id): for channel in data['channels']: if channel_id == channel['channel_id']: if u_id in channel['members']: raise ValueError ('User is already a member of the channel!') elif channel['is_public'] is False and isAdmin(data, u_id) is False: raise AccessError ('Channel is private and you do not have admin permission access.') else: channel['members'].append(u_id) return True raise ValueError ('Channel does not exist.')
def removeOwnerFromChannel(data, channel_id, auth_u_id, target_u_id): for channel in data['channels']: if channel_id == channel['channel_id']: if target_u_id not in channel['owners']: raise ValueError ('User is not an owner of the channel!') elif auth_u_id not in channel['owners'] or isServerOwner(data, auth_u_id): raise AccessError ('Invalid permission level; you are not an owner of this channel or server.') else: channel['owners'].remove(target_u_id) return True raise ValueError ('Channel does not exist.')
def addOwnerToChannel(data, channel_id, auth_u_id, u_id): for channel in data['channels']: if channel_id == channel['channel_id']: if u_id in channel['owners']: raise ValueError ('User is already an owner of the channel!') elif auth_u_id not in channel['owners'] or isServerOwner(data, auth_u_id): raise AccessError ('Invalid permission level; you are not an owner of this channel or server.') else: channel['owners'].append(u_id) return True raise ValueError ('Channel does not exist.')
def unpinMessage(data, token, messageId): if not messageExists(data, messageId): raise ValueError("That message does not exist") u_id = getUserFromToken(token) # Check whether user has the permission to pin for channels in data['channels']: for message in channels['messages']: if message['message_id'] == messageId: cid = channels['channel_id'] present = False for channels in data['channels']: #if channels['channel_id'] == cid: #print(channels['members']) #print("and we have") #print(u_id) for members in channels['members']: if members == str(u_id): #print("found him") present = True #print(members) if present == False: raise AccessError("user is not a part of that channel") for user in data['users']: if user['u_id'] == u_id: if user['is_admin'] == 3: raise ValueError( 'The authorised user is not an admin or owner') ispinned = isPinned(data, messageId) if ispinned == False: raise ValueError('That message is not yet pinned') #get the channels id for channel in data['channels']: for message in channel['messages']: if messageId == message['message_id']: cId = channel['channel_id'] #userIsInChannel(data, cId, u_id) if isUserinChannelbool(data, cId, u_id) == False: raise AccessError( "User is not in that channel 184msg helper") #end of error checking message['is_pinned'] = 0
def validate_message(data, message, channelid, token, u_id): exists = False for channel in data['channels']: if str(channel['channel_id']) == str(channelid): exists = True if exists == False: raise ValueError("bad channel Id") u_id = getUserFromToken(token) #userIsInChannel(data, channelid, u_id) if isUserinChannelbool(data, channelid, u_id) == False: raise AccessError("User is not in that channel 184msg helper") if len(message) > 1000: raise ValueError( "ValueError when:Message is more than 1000 characters")
def validate_messageLater(data, message, channelid, token, timeSend, Realtime): if channelid in data['channels']: pass else: raise ValueError("invalid token") u_id = getUserFromToken(token) #userIsInChannel(data, channelid, u_id) if isUserinChannelbool(data, channelid, u_id) == False: raise AccessError("User is not in that channel 184msg helper") #value error: Time sent is a time in the past #Value Error time sent is in past if len(message) > 1000: raise ValueError( "ValueError when:Message is more than 1000 characters")
def standupSendFunc(data, token, channel_id, message): u_id = getUserFromToken(token) if channelExists(data, channel_id) is False: raise ValueError("Channel ID is not a valid channel.") if userIsInChannel(data, channel_id, u_id) is False: return AccessError("User is not in the channel.") if len(message) > 1000: raise ValueError ("Message exceeds 1000 char limit.") if standupStillActive(data, channel_id, u_id): alteredMessage = str(u_id) + ":" + message for channel in data['channels']: if channel == channel_id: channel['standup_message'].append(alteredMessage) else: raise ValueError ("An active standup is not currently running in this channel.")
def search(data, token, query_str): # Decode token to match user u_id = getUserFromToken(token) matched_mesg = { 'messages': [] } for ser_chan in data['channels']: # Check if user in the channel if str(u_id) in str(ser_chan['members']): # Find matched message # ser_mesg['message'] is the content of a message for ser_mesg in ser_chan['messages']: raise AccessError('2nd') # Match found if query_str in ser_mesg['message']: matched_mesg['messages'].append(ser_mesg) return matched_mesg
def unreactMessage(data, messageId, reactId, token): valid = False for channel in data['channels']: for message in channel['messages']: if messageId == message['message_id']: cId = channel['channel_id'] valid = True if valid == False: raise ValueError("Didnt find message") u_id = getUserFromToken(token) #userIsInChannel(data, cId, u_id) if isUserinChannelbool(data, cId, u_id) == False: raise AccessError("User is not in that channel 184msg helper") if reactId != 1: raise ValueError("invalid reactId") # reacted = False for channel in data['channels']: for message in channel['messages']: if message['message_id'] == messageId: if message['is_reacted'] != reactId: raise ValueError("does not have that react id") message['is_reacted'] = 0
def pinMessage(data, token, messageId): if not messageExists(data, messageId): raise ValueError("That message does not exist") u_id = str(getUserFromToken(token)) # Check whether user has the permission to pin #print("PINNN THISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS") useradmin = False #print(u_id) for user in data['users']: #print(user['u_id']) #print("compared to") #print(u_id) if str(user['u_id']) == str(u_id): #print("how'd we get in here lol") #print(user['is_admin']) if user['is_admin'] == 1: useradmin = True #print("you're a wizard harry") if user['is_admin'] == 2: useradmin = True #print(useradmin) if useradmin == False: raise ValueError('user is not an admin') ipinned = isPinned(data, messageId) if ipinned == True: raise ValueError('That message is already pinned') #print(ipinned) #get the channels id for channel in data['channels']: for message in channel['messages']: if messageId == message['message_id']: cId = channel['channel_id'] #userIsInChannel(data, cId, u_id) if isUserinChannelbool(data, cId, u_id) == False: raise AccessError( "User is not in that channel 184msg helper") #end of error checking message['is_pinned'] = 1
def reactToMessage(data, messageId, reactId, token): valid = False # channelId = "what the f**k" # for channel in data['channels']: # for message in channel['messages']: # if message['message_id'] == messageId: # channelId = channel['channel_id'] for channel in data['channels']: for message in channel['messages']: # print("comparing..") # print(messageId) # print(" ...and ... ") # print(message['message_id']) if messageId == message['message_id']: cId = channel['channel_id'] valid = True if valid == False: raise ValueError("Didnt find message") u_id = getUserFromToken(token) #userIsInChannel(data, cId, u_id) if isUserinChannelbool(data, cId, u_id) == False: raise AccessError("User is not in that channel 184msg helper") #print("AFTER THE DUMB THING ===============================") #print(cId) if valid == False: raise ValueError("Invalid IDs") if reactId != 1: raise ValueError("invalid reactId") # reacted = False for channel in data['channels']: for message in channel['messages']: if message['message_id'] == messageId: if message['is_reacted'] == 1: raise ValueError("Already reacted") message['is_reacted'] = 1
def checkTokenValidity(token, data): if token in data['tokens']: return True else: raise AccessError('Invalid Token!')
def checkTokenValidity(token, data): if token in data['tokens']: if getUserFromToken(request.args.get('token')) is not None: return True else: raise AccessError('Invalid Token!')
def wrapper(*args, **kwargs): raise AccessError('Method unavailable yet')