예제 #1
0
파일: group.py 프로젝트: bbortolli/bora-app
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.')
예제 #2
0
파일: group.py 프로젝트: bbortolli/bora-app
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.')
예제 #3
0
파일: group.py 프로젝트: bbortolli/bora-app
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)
예제 #4
0
파일: user.py 프로젝트: bbortolli/bora-app
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)
예제 #5
0
파일: user.py 프로젝트: bbortolli/bora-app
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)
예제 #6
0
파일: group.py 프로젝트: bbortolli/bora-app
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))
    })
예제 #7
0
파일: user.py 프로젝트: bbortolli/bora-app
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)
예제 #8
0
파일: user.py 프로젝트: bbortolli/bora-app
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.')
예제 #9
0
파일: group.py 프로젝트: bbortolli/bora-app
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)
예제 #10
0
파일: group.py 프로젝트: bbortolli/bora-app
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.')
예제 #11
0
파일: auth.py 프로젝트: bbortolli/bora-app
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.')