Beispiel #1
0
    async def log_in(self, email: str, password: str) -> 'AuthMediator':
        try:
            user = await self.fetch_pg_user(email)
        except Exception as e:
            print(f'Error fetching user from DB: {}', e)
            return self

        if not user:
            self.message = 'No user found with that email'
            return self

        # Initialize the default User object
        user_obj = User()

        # If the entered password == the password in the DB, store
        # the user data from Postgres in the User object and return the User object
        if user_obj.check_password(password, user['password'],
                                   os.getenv('BCRYPT_SALT', None)):
            self.hermes_user = User(user['id'], user['email'], password,
                                    user['name'], user['permission_level'],
                                    user['last_fetch'], user['creds'])

            return self.hermes_user
        else:
            self.message = 'Error logging in.'
            return self
Beispiel #2
0
 def create_user(self, **kwargs):
     if self.validate_email(kwargs["email"]):
         user = User.get(email=kwargs["email"])
         if user is None:
             if kwargs.get("role_id") is None:
                 role = Role.get(description="user")
             else:
                 role = Role.get(role_id=kwargs["role_id"])
             passwd_encode = generate_password_hash(kwargs["password"])
             user = User(city_id=kwargs["city_id"],
                         email=kwargs["email"],
                         password=passwd_encode,
                         name=kwargs["name"],
                         nickname=kwargs["nickname"],
                         gender=kwargs["gender"],
                         active=True,
                         birth_date=datetime.strptime(
                             kwargs["birth_date"], "%d/%m/%Y"),
                         role_id=role,
                         street=kwargs["street"],
                         number=kwargs["number"],
                         complement=kwargs["complement"],
                         district=kwargs["district"],
                         postal_code=kwargs["postal_code"],
                         create_date=datetime.now())
             user.flush()
             phones = kwargs["phone"]
             self.add_phones_user(phones, user)
             commit()
             response = {
                 "user_id": user.user_id,
                 "nickname": user.nickname,
                 "name": user.name,
                 "email": user.email,
                 "gender": user.gender,
                 "role": role.description,
                 "role_id": role.role_id,
                 "street": user.street,
                 "city": user.city_id.city,
                 "city_id": user.city_id.city_id,
                 "state": user.city_id.state_id.state,
                 "state_id": user.city_id.state_id.state_id,
                 "number": user.number,
                 "complement": user.complement,
                 "district": user.district,
                 "postal_code": user.postal_code,
                 "phones": kwargs["phone"]
             }
         else:
             response = {"message": "Email exist", "type": "ERROR"}
     else:
         response = {"message": "Email not valide", "type": "ERROR"}
     return json.dumps(response)
Beispiel #3
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('panel.panel'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(email=form.email.data, username=form.username.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash("Account created", 'info')
        return redirect(url_for('auth.login'))
    return render_template('auth/register.html', form=form, title="Register")
 async def create_user(self):
     data = await self.request.post()
     user = User(name=data["name"])
     user.api_key = user.generate_api_key()
     try:
         await user.save(self.request.app["db"])
     except DuplicateKeyError:
         return aiohttp.web.json_response({"error": f"user already exists"},
                                          status=409)
     return aiohttp.web.json_response(
         user.to_json(),
         status=201,
     )
Beispiel #5
0
 def register3(self, UserPhone, PassWord, NickName):
     try:
         user = User()
         nq = User.query.filter_by(UserPhone=UserPhone).all()
         if len(nq) != 0:
             state = 0
             msg = "此手机号已经被注册了亲!"
             array = {'state': state, 'msg': msg}
             return array
         m = hashlib.md5()
         m.update(PassWord.encode('utf-8'))
         PassWord = m.hexdigest()
         user.PassWord = PassWord
         user.NickName = NickName
         user.UserPhone = UserPhone
         user.UserPhoto = 'http://7xrqhs.com1.z0.glb.clouddn.com/default1.jpg'
         user.Experience = 0
         user.UserSex = 2
         db.session.add(user)
         db.session.commit()
         state = 1
         msg = "成功!"
         array = {'state': state, 'msg': msg}
         return array
     except Exception as e:
         print(e)
         state = 0
         msg = "出现奇怪的错误了,一会再试试吧!"
         array = {'state': state, 'msg': msg}
         return array
Beispiel #6
0
def test_token():
    user = User.verify_auth_token(
        request.headers.get('Authentication-Token'))
    if user is not None:
        return jsonify(user.get_dict()), 201
    else:
        return jsonify({}), 403
Beispiel #7
0
 def alter_password(self, user_id, password, new_password):
     user = User.get(id=user_id)
     passwd_encode = self.encode_password(password)
     if user.password == passwd_encode:
         new_password_encode = self.encode_password(new_password)
         user.password = new_password_encode
         commit()
Beispiel #8
0
    def find_user_or_404(self):
        value = self.get_user_by_criterion()
        user = db.find(where={value["criterion"]: value["value"]})
        if user is None:
            raise NotFoundUser(NOT_FOUND_USER)

        return User(**user)
Beispiel #9
0
 def link_institution(self, user_id, institution_id):
     user = User.get(user_id=user_id)
     if self.limit_institution_number(user_id=user_id):
         crud_inst = CRUDInstitution()
         inst = crud_inst.get_institutions(institution_id=institution_id)
         user_inst = UserInstitution.get(user_id=user_id,
                                         institution_id=institution_id)
         if not user_inst is None:
             user_inst.status = "PENDING"
         else:
             user_inst = UserInstitution(user_id=user_id,
                                         institution_id=institution_id,
                                         status="PENDING",
                                         event_date=datetime.today())
         commit()
         inst_data = crud_inst.get_institution(
             institution_id=institution_id, export_json=False)
         inst_data["status"] = "PENDING"
         result = inst_data
     else:
         result = {
             "message":
             "USUARIO NAO PODE SE VINCULAR EM MAIS DE 1 INSTITUICAO"
         }
     return result
Beispiel #10
0
 def get_user(self, id, export_json=True):
     user = User.get(user_id=id)
     phones_user = select(user_phone for user_phone in UserPhone
                          if user_phone.user_id == user)
     phones = []
     for phone_user in phones_user:
         phone = Phone.get(phone_id=phone_user.phone_id.phone_id)
         phones.append(phone.number)
     response = {
         "user_id": id,
         "nickname": user.nickname,
         "name": user.name,
         "email": user.email,
         "gender": user.gender,
         "role": user.role_id.description,
         "role_id": user.role_id.role_id,
         "bith_date": user.birth_date.strftime("%d/%m/%Y"),
         "city": user.city_id.city,
         "city_id": user.city_id.city_id,
         "state": user.city_id.state_id.state,
         "state_id": user.city_id.state_id.state_id,
         "phones": phones,
         "street": user.street,
         "number": user.number,
         "complement": user.complement,
         "district": user.district,
         "postal_code": user.postal_code,
     }
     if export_json:
         response = json.dumps(response)
     return response
Beispiel #11
0
def init():
    """initialize database and directories"""
    try:
        remakedir(settings.DATA_DIR_PATH)
        remakedir(settings.DEMO_DIR_PATH)
        remakedir(settings.THUMBNAIL_DIR_PATH)
    except:
        print sys.exc_info()
        
    try:
        if os.path.exists(settings.DB_PATH):
            os.remove(settings.DB_PATH)
        init_db()
        if getpwuid(os.getuid())[0] == 'root':
            os.chown(settings.DB_PATH, apache_uid, apache_gid)
    except:
        print sys.exc_info()

    try:
        role_admin = UserRole('admin', 'for administrators')
        db_session.add(role_admin)

        user_admin = User('admin', role=role_admin)
        db_session.add(user_admin)

        db_session.commit()
        db_session.remove()

    except:
        print sys.exc_info()
Beispiel #12
0
 def remove_phone(self, user_id, phone_id):
     user = User.get(user_id=user_id)
     phone = Phone.get(phone_id=phone_id)
     phone_user = UserPhone.get(user_id=user, phone_id=phone)
     phone.delete()
     phone_user.delete()
     commit()
Beispiel #13
0
 def create_donation(self, user_id ,**kwargs):
     unit = Unit.get(unit_id=kwargs["unit_id"])
     user = User.get(user_id=user_id)
     donation_detaiils = DonationTypeDetails.get(donation_type_details_id=kwargs["donation_type_details_id"])
     donation_type = DonationType.get(donation_type_id=kwargs["donation_type_id"])
     date_entry = datetime.strptime(kwargs["date_entry"], "%d/%m/%Y %H:%M")
     date_out = datetime.strptime("01/01/9999", "%d/%m/%Y")
     donation = DonationUser(donation_type_details_id=donation_detaiils,
                             donation_type_id=donation_type,
                             unit_id=unit,
                             date_entry=date_entry,
                             date_out=date_out,
                             amount_entry=kwargs["amount_entry"],
                             user_id=user,
                             status="PENDING"
                             )
     donation.flush()
     commit()
     response = {"user_id": donation.user_id.user_id,
                 "unit_id": unit.unit_id,
                 "unit_id_description": unit.description,
                 "donation_user_id": donation.donation_user_id,
                 "donation_type_id": donation_type.donation_type_id,
                 "donation_type_id_description": donation_type.description,
                 "donation_type_details_id": donation.donation_type_details_id.donation_type_details_id,
                 "donation_type_details_id_description": donation.donation_type_details_id.description,
                 "amount_entry": donation.amount_entry,
                 "date_entry": kwargs["date_entry"],
                 "date_out": "01/01/9999",
                 "status": donation.status
                 }
     return response
Beispiel #14
0
def test_current_user(db, session):
    user = User(name="sam", institution="UofM")
    entry = Entry(description="desc", template="temp", user=user)
    session.add_all([user, entry])
    session.commit()

    current_users = [user[0] for user in db.session.query(User.name).all()]
    assert user.name in current_users
Beispiel #15
0
 def create_user(username, password, admin):
     hashed_password = generate_password_hash(password, method='sha256')
     user = User(public_id=str(uuid.uuid4()),
                 username=username,
                 password=hashed_password,
                 admin=admin)
     db.session.add(user)
     db.session.commit()
Beispiel #16
0
def get_user_reservations(username):
    l_reservations = []
    users = User.objects(username=username)
    if len(users) == 0:
        return jsonify({"msg": "未知用户"}), 404
    reservations = Reservation.objects(owner=users[0])
    for r in reservations:
        l_reservations.append(r.get_dict())
    return jsonify(l_reservations), 200
Beispiel #17
0
def update_user(username):
    user = User.verify_auth_token(
        request.headers.get('Authentication-Token'))
    if user.username == username:
        new_user = json.loads(request.get_data())
        user.update_with_dict(new_user)
        return jsonify(user.get_dict()), 201
    else:
        return 403
Beispiel #18
0
def get_user_info():
    user = User.verify_auth_token(
        request.headers.get('Authentication-Token'))
    if user == -1:
        return jsonify({'error': '未登录'}), 401
    if user is not None:
        return jsonify(user.get_dict()), 201
    else:
        return jsonify({}), 403
Beispiel #19
0
 def delete_user(self, user_id):
     try:
         user = User.get(user_id=user_id)
         user.active = False
         commit()
         return {"message": "user deleted"}
     except Exception as ex:
         print(ex)
         return {"message": "erro"}
Beispiel #20
0
def test_many_many_relationship(db, session):
    user = User(name="sam", institution="UofM")
    entry = Entry(description="desc", template="temp", user_saves=user)

    session.add_all([user, entry])
    session.commit()

    assert entry in user.saved_entries
    assert user in entry.user_saves
Beispiel #21
0
def register_user():
    data = request.get_data()
    data = json.loads(data)
    username = data['username']
    password = data['password']
    users = User.objects(username=username, password=password)
    if len(users) > 0:
        return jsonify({'id': -1}), 409
    else:
        user = User()
        user.username = username
        user.password = password
        user.privilege = 0
        user.save()
        return jsonify(user.get_dict()), 201
Beispiel #22
0
def oauth_callback():
    if not current_user.is_anonymous:
        return redirect(url_for('index'))
    oauth = VkSignIn()
    social_id, name, image_url, friends_count = oauth.callback()
    if social_id is None:
        flash('Authentication failed.')
        return redirect(url_for('index'))
    user = User.objects(social_id=social_id).first()
    if not user:
        user = User(social_id=social_id, ).save()
    login_user(user, True)
    values = {
        'name': name,
        'friends_count': friends_count,
        'image_url': image_url,
    }
    session.update(values)
    return redirect(url_for('index'))
Beispiel #23
0
def delete_reservation(r_id):
    user = User.verify_auth_token(request.headers.get('Authentication-Token'))
    if user is not None:
        r = Reservation.objects(id=r_id)
        if len(r) == 0:
            return jsonify({}), 404
        if r[0].owner == user:
            r.delete()
            return jsonify({}), 204
    return jsonify({"msg": "Not permitted"}), 403
Beispiel #24
0
def create_reservation():
    """Apply for a reservation"""
    user = User.verify_auth_token(request.headers.get('Authentication-Token'))
    if user is not None:
        data = json.loads(request.get_data())
        r = Reservation.reserve(user, data['start_time'], data['end_time'], data['detail'])
        if r is not None:
            return jsonify(r.get_dict()), 201
        return jsonify({"error": "预约失败,时间冲突"}), 403
    else:
        return jsonify({}), 403
Beispiel #25
0
def reject(r_id):
    user = User.verify_auth_token(request.headers.get('Authentication-Token'))
    if user is not None:
        if user.privilege > 0:  # Check if user is an administrator.
            r = Reservation.objects(id=r_id)
            if len(r) == 0:
                return jsonify({"msg": "Id not exist"}), 404
            else:
                r[0].reject()
                return jsonify(r[0].get_dict()), 201
        else:
            return jsonify({"msg": "Not permitted"}), 403
Beispiel #26
0
    def edit_user_values(self, value, msg):
        user = self.find_user_or_404()

        print(f"Edytujesz uzytkownika: {user}")

        new_value = str(input(msg))
        db.update(user, values={value: new_value})
        returned_where = {
            "username": new_value if value == "username" else user.username
        }
        updated_user = db.find(where=returned_where)
        print(User(**updated_user))
Beispiel #27
0
def authorized(oauth_token):
    next_url = request.args.get('next') or url_for('index')
    if oauth_token is None:
        flash("Authorization failed.")
        return redirect(next_url)

    session['oauth_token'] = oauth_token

    me = github.get('user')
    user_id = me['login']

    user = User.query.filter_by(id=user_id).first()
    if user is None:
        user = User(id=user_id, uid=user_id, name=me['name'], source='github')

    user.last_login = DateUtil.now_datetime()
    user.save()

    RequestUtil.login(session, user_id)

    return redirect(next_url)
Beispiel #28
0
def user_cookie():
    user = None
    if 'uid' in session:
        user = User.query.filter(User.cookie_id == str(session['uid'])).first()
    if user is None:
        session['uid'] = uuid4()
        data = User(str(session['uid']))
        db_session.add(data)
        db_session.commit()
        user = User.query.filter(User.cookie_id == str(session['uid'])).first()

    return user
Beispiel #29
0
def adminpassword():
    """set admin password"""
    admin_username = "******"

    password = getpass.getpass()
    if len(password) < 8:
        print "dame"
        return

    admin = User.query.get(1)

    if not admin:
        userrole = UserRole.query.get("admin")
        admin = User(admin_username, userrole)
        db_session.add(admin)

    admin.set_password(password)

    db_session.commit()
    db_session.remove()

    print "update successfully"
Beispiel #30
0
def test_relationship(db, session):
    user = User(name="Sam", institution="UofM")
    entry = Entry(description="Smarty", template="template", user=user)

    print(db.session.execute('show tables').fetchall())
    print(db.session.execute('select * from entries').fetchall())
    print(db.session.execute('select * from test.entries').fetchall())

    session.add_all([user, entry])
    session.commit()

    assert entry in user.submissions
    assert entry.user is user
Beispiel #31
0
 def autenticate(self, email, password):
     user = User.get(email=email)
     user_controller = UserController()
     if user and check_password_hash(user.password, password):
         user_data = user_controller.get_user(id=user.user_id,
                                              export_json=False)
         token = self.encode_token(data={
             "email": email,
             "role": user_data["role"]
         })
         user_data["token"] = token
         return json.dumps(user_data)
     return None
Beispiel #32
0
    def register3(self, UserPhone, PassWord, NickName):
        try:
            user = User()
            nq = User.query.filter_by(UserPhone=UserPhone).all()
            if len(nq) != 0:
                state = 0
                msg = "此手机号已经被注册了亲!"
                array = {
                    'state': state,
                    'msg': msg
                }
                return array
            m = hashlib.md5()
            m.update(PassWord.encode('utf-8'))

            PassWord = m.hexdigest()
            user.PassWord = PassWord
            user.NickName = NickName
            user.UserPhone = UserPhone
            user.UserPhoto = 'http://7xrqhs.com1.z0.glb.clouddn.com/default1.jpg'
            user.Experience = 0
            user.UserSex = 2
            db.session.add(user)
            db.session.commit()

            state = 1
            msg = "成功!"
            array = {
                'state': state,
                'msg': msg
            }
            return array
        except Exception as e:
            print(e)
            state = 0
            msg = "出现奇怪的错误了,一会再试试吧!"
            array = {
                'state': state,
                'msg': msg
            }
            return array
Beispiel #33
0
# -*- coding: utf-8 -*-
from app.db import Base, User, Address
from settings import SQLALCHEMY_ENGINE, SQLALCHEMY_SESSION


if __name__ == '__main__':
    Base.metadata.create_all(SQLALCHEMY_ENGINE)
    session = SQLALCHEMY_SESSION()

    session.add_all([
        User(name='ed', fullname='Ed Jones', password='******'),
        User(name='wendy', fullname='Wendy Williams', password='******'),
        User(name='mary', fullname='Mary Contrary', password='******'),
        User(name='fred', fullname='Fred Flinstone', password='******')
    ])

    jack = User(name='jack', fullname='Jack Bean', password='******')
    jack.addresses = [
        Address(email_address='*****@*****.**'),
        Address(email_address='*****@*****.**')
    ]
    session.add(jack)
    session.commit()