def join(group_id): id_request = request_user_id(request) group = db.find_by_id('group', group_id) if not group: return res_error(400, 'Group do not exists.') group_users = group.get('users') group_requests = group.get('requests') group_invites = group.get('invites') if id_request in group_users: return res_success(200, 'User already in group.') if id_request in group_requests: return res_success(200, 'Request already send.') if id_request in group_invites: updated_group = manage_group('add', group_id, 'users', id_request) updated_group_2 = manage_group('remove', group_id, 'invites', id_request) updated_user = manage_user('add', id_request, 'groups', group_id) updated_user_2 = manage_user('remove', id_request, 'invites', group_id) return res_success(200, 'Joined.') else: updated_group = manage_group('add', group_id, 'invites', id_request) return res_success(200, 'Request send.')
def add_user(group_id, user_id): id_request = request_user_id(request) group = db.find_by_id('group', group_id) if not group: return res_error(400, 'Group do not exists.') if group.get('owner_id') != id_request: return res_error(401, 'Unauthorized.') group_users = group.get('users') group_requests = group.get('requests') group_invites = group.get('invites') if user_id in group_users: return res_success(200, 'User already a member.') if user_id in group_invites: return res_success(200, 'User already invited.') if user_id in group_requests: # adicionar no grupo updated_user = manage_user('add', user_id, 'groups', group_id) updated_group = manage_group('add', group_id, 'users', user_id) updated_group_2 = manage_group('remove', group_id, 'requests', user_id) return res_success(200, 'User accepted.') else: updated_user = manage_user('add', user_id, 'invites', group_id) updated_group = manage_group('add', group_id, 'invites', user_id) return res_success(200, 'User invited.')
def get(id): id_request = request_user_id(request) group = db.find_by_id('group', id) authorized = id_request == group.get( 'owner_id') or id_request in group.get('users') if authorized: return res_success(200, group) else: return res_success(200)
def get(id): user_id = request_user_id(request) user = User.objects(_id=user_id) if not user: return res_success(200) if id == user_id: return res_success(200, user) else: data = {'id': str(user.get('_id')), 'email': user.get('email')} return res_success(200, data)
def insert(): data = request.json email = data.get('email') document = data.get('document') password = data.get('password') re_password = data.get('re_password') if password and re_password and password != re_password: return res_error(200, 'Password and verification required.') try: User.objects.get(Q(email=email) | Q(document=document)) return res_error(200, 'Email or document already in use.') except User.DoesNotExist: pass try: data.update(friends=[], groups=[], events=[], invites=[], password=security.pbkdf2_hex(password, SALT, 69), created_at=datetime.datetime.utcnow) user = User(**dissoc(data, 're_password')) user.validate() created = user.save().to_mongo().to_dict() return res_success(200, {'id': created['_id']}) except Exception as e: print(e) return res_error(400, e)
def user_groups(): id_request = request_user_id(request) print(id_request) all_groups = db.find_many('group', 'owner_id', [id_request]) if id_request else [] return res_success(200, { 'groups': list(map(lambda group: dissoc(group, 'owner_id'), all_groups)) })
def update(): id_request = validate_login(request) if not id_request: return res_error(403, 'Please connect first.') if id and len(id) == 24: user = db.update_by_id( 'user', id_request, ) if not user: return res_error(400, 'User do not exists.') return res_success(200)
def groups(id): user_id = request_user_id(request) if user_id != id: return res_error(401, 'Unauthorized.') user = db.find_by_id('user', user_id) if not user: return res_error(400, 'User do not exists.') id_list = list(map(lambda id: ObjectId(id), user.get('groups'))) groups = db.find_many('group', '_id', id_list) if len(groups): return res_success(200, groups) else: return res_error(400, 'Group do not exists.')
def test(): grupo = Group(name='Meu grupo de teste', origin='Origem', destiny='Destino', owner='123456123456123456123456', managers=[], members=[], requests=[], invites=[]) try: grupo.validate() grupo.save() return res_success(200) except Exception as e: print(e) print(Group.objects.first()) return res_error(403)
def insert(): valid_group = validate_group(request.json) error = valid_group.get('error') if error: return res_error(400, error) id_request = request_user_id(request) data = valid_group.get('data') data.update(owner_id=id_request) new_group = db.insert('group', data) if not new_group: res_error(500, 'Error in registration.') updated_user = manage_user('add', id_request, 'groups', new_group) return res_success(200, {'id': new_group}) if updated_user else res_error( 500, 'Error in registration.')
def login(): data = request.json email = data.get('email') password = data.get('password') if not email or not password: return res_error(400, 'Required field: email and password') user = db.find_one('user', 'email', email) if not user: return res_error(401, 'Incorrect credentials.') hash_password = security.pbkdf2_hex(password, SALT, 69) if user.get('password') == hash_password: payload = { 'exp': datetime.utcnow() + timedelta(minutes=30), 'id': str(user.get('_id')) } encoded_jwt = encode(payload, SECRET, algorithm='HS256') return res_success(200, {'jwt': encoded_jwt.decode('utf-8')}) return res_error(401, 'Incorrect credentials.')