def signup_user(data, is_admin):
     user = User.query.filter_by(email=data['email']).first()
     if not user:
         new_user = User(public_id=str(uuid.uuid4()),
                         email=data['email'],
                         username=data['username'],
                         password=data['password'],
                         phone=data['phone'],
                         admin=True if is_admin is True else False,
                         registered_on=datetime.datetime.utcnow())
         save_changes(new_user)
         try:
             # generate the auth token
             auth_token = User.encode_auth_token(new_user.id)
             response_object = {
                 'status': 'success',
                 'message': 'Successfully registered.',
                 'Authorization': auth_token.decode()
             }
             return response_object, 201
         except Exception as e:
             response_object = {
                 'status': 'fail',
                 'message': 'Some error occurred. Please try again.'
             }
             return response_object, 401
     else:
         response_object = {
             'status': 'fail',
             'message': 'User already exists. Please Log in.',
         }
         return response_object, 409
def update_user(data, request):
    user, status, error = Auth.get_logged_in_user(request)

    if not user:
        response_object = {'status': 'error', 'message': error}
        return response_object, status

    try:
        fields = validate_update(model=user, data=data)

        # assign fields with extra validation for some attributes
        for field, value in fields.items():
            if field == 'email':
                User.validate_email(user, key='email', email=data['email'])
            setattr(user, field, data[field])

        save_changes()
    except AssertionError as error:
        response_object = {'status': 'error', 'message': str(error)}
        return response_object, 400

    response_object = {
        'status': 'success',
        'message': 'User updated.',
    }
    return response_object, 200
Beispiel #3
0
def save_new_user(data):
    user = User.query.filter_by(email=data['email']).first()
    if not user:
        new_user = User(
            public_id=data['public_id'],
            email=data['email'],
            username=data['username'],
            password=data['password'],
            level_cd=data['level_cd'],
            user_role=data['user_role'],
            reg_datetime=datetime.datetime.utcnow(),
            memo="",
        )
        if data['level_cd'] == '99':  # super admin
            new_user.is_admin = True
        else:
            new_user.is_admin = False
        user_detail = UserDetail(
            public_id=data['public_id'],
            address=data['address'],
            phone_number=data['phone_number'],
            reg_datetime=datetime.datetime.utcnow(),
        )
        save_changes(new_user, user_detail)  # insert to DB
        return generate_token(new_user)
    else:
        response_object = {
            'status': 'fail',
            'message': 'User email already exists. Please Log in.',
        }
        return response_object, 409
Beispiel #4
0
def initdb():
    """Create db tables and init data"""
    db.drop_all()
    db.create_all()
    user_admin = User(name='admin',
                      password='******',
                      type=1,
                      state=1,
                      create_time=time.strftime('%Y-%m-%d %X',
                                                time.localtime()))
    user_manager = User(name='manager',
                        password='******',
                        type=2,
                        state=1,
                        create_time=time.strftime('%Y-%m-%d %X',
                                                  time.localtime()))
    user_guest = User(name='guest',
                      password='******',
                      type=3,
                      state=1,
                      create_time=time.strftime('%Y-%m-%d %X',
                                                time.localtime()))
    db.session.add(user_admin)
    db.session.add(user_manager)
    db.session.add(user_guest)
Beispiel #5
0
 def get_logged_in_user(new_request):
     # get the auth token
     auth_token = new_request.headers.get('Authorization')
     if auth_token:
         resp = User.decode_auth_token(auth_token)
         if not isinstance(resp, str):
             user = User.objects(id=resp)[0]
             response_object = {
                 'status': 'success',
                 'data': {
                     'user_id': user.id,
                     'email': user.email,
                     'registered_on': str(user.registered_on)
                 }
             }
             return response_object, 200
         response_object = {
             'status': 'fail',
             'message': resp
         }
         return response_object, 401
     else:
         response_object = {
             'status': 'fail',
             'message': 'Provide a valid auth token.'
         }
         return response_object, 401
Beispiel #6
0
def save_new_user(data):
    user = User.query.filter_by(username=data['username']).first()

    if not user:
        if 'email' in data:
            new_user = User(public_id=data['username'],
                            email=data['email'],
                            username=data['username'],
                            password=data['password'],
                            registered_on=datetime.datetime.utcnow(),
                            level=1)
            save_changes(new_user)
            return generate_token(new_user)
        else:
            new_user = User(public_id=data['username'],
                            email=None,
                            username=data['username'],
                            password=data['password'],
                            registered_on=datetime.datetime.utcnow(),
                            level=1)
            save_changes(new_user)
            return generate_token(new_user)
    else:
        response_object = {
            'status': 'fail',
            'message': 'User already exists. Please Log in.',
        }
        return response_object, 409
 def test_encode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 registered_on=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
Beispiel #8
0
 def test_decode_auth_token(self):
     user = User(password='******', registered_on=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
     self.assertTrue(
         User.decode_auth_token(auth_token.decode("utf-8")) == 1)
Beispiel #9
0
 def test_encode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 registered_on=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     ret, auth_token = user.encode_auth_token(user.id, 'test_key')
     self.assertTrue(ret)
Beispiel #10
0
 def save_user_to_db_and_get_token():
     user = User(email='*****@*****.**',
                 password='******',
                 created_at=datetime.datetime.utcnow(),
                 updated_at=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     return auth_token
    def test_encode_auth_token(self):
        user = User(email='*****@*****.**',
                    password='******',
                    registration_date=datetime.utcnow())

        db.session.add(user)
        db.session.commit()
        auth_token = user.encode_auth_token(user.public_id)
        self.assertTrue(isinstance(auth_token, bytes))
Beispiel #12
0
 def test_encode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 reg_datetime=datetime.datetime.utcnow(),
                 user_role='inspector',
                 level_cd='11')
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
Beispiel #13
0
def load_db():
    with app.app_context():
        User.query.delete()
        db.session.commit()
        for data in samples:
            user = User(**dict(zip(attrs, data)))
            if user.username=='Admin':
                user.is_admin = True
            db.session.add(user)
            db.session.commit()
        print(User.query.all())
 def test_decode_auth_token(self):
     user = User(
         email="*****@*****.**",
         registered_on=datetime.datetime.utcnow(),
         password="******"
     )
     db.session.add(user)
     db.session.commit()
     auth_token = User.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
     self.assertTrue(User.decode_auth_token(auth_token) == 1)
Beispiel #15
0
 def test_decode_auth_token(self):
     user_id = uuid.uuid4()
     user = User(email='*****@*****.**',
                 id=user_id,
                 username='******',
                 password='******',
                 registered_on=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertEqual(User.decode_auth_token(auth_token), user.id)
Beispiel #16
0
    def test_decode_auth_token(self):
        user = User(email='*****@*****.**',
                    password='******',
                    joined_at=datetime.datetime.utcnow())
        db.session.add(user)
        db.session.commit()
        auth_token = User.encode_auth_token(user.id)

        self.assertTrue(isinstance(auth_token, bytes))
        self.assertTrue(
            User.decode_auth_token(auth_token.decode("utf-8")) == 1)
Beispiel #17
0
 def test_decode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 registered_on=datetime.datetime.utcnow(),
                 public_id=str(uuid.uuid4()),
                 username='******')
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
     self.assertTrue(
         User.decode_auth_token(auth_token.decode('utf-8')) == 1)
Beispiel #18
0
 def test_decode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 reg_datetime=datetime.datetime.utcnow(),
                 user_role='worker',
                 level_cd='01')
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
     self.assertTrue(
         User.decode_auth_token(auth_token.decode("utf-8")) == 1)
def save_new_user(data: Dict[str,str]) -> Dict[str,str]:
    """
    Store user into database
    """

    # Check if user exist
    email = data['mail']
    username = data['username']
    user = User.query.filter((User.mail == email) | (User.username == username)).first()

    response_object = {
        'status': 0,
        'message': '',
        'error_message': '',
        'data': {}
    }

    if user:
        repeated_value = email if user.mail == email else username
        repeated_key = 'email' if user.mail == email else 'username'

        # User exist, do not continue
        response_object['status'] = 409
        response_object['error_message'] = 'User with {0} [{1}] already exist'.format(repeated_key, repeated_value)

        return response_object

    # Create user
    new_user = User(
        name=data['name'],
        lastname=data['lastname'],
        mail=email,
        username=username,
        password=data['password']
    )
    # new_user.password = data['password']

    db.session.add(new_user)
    db.session.commit()

    serialized_user = new_user.serialize()

    response_object['status'] = 201
    response_object['message'] = 'User created'
    response_object['data'] = {
        'user': serialized_user,
        'token': generate_auth_token_for_user(new_user)
    }

    save_new_event('[REGISTER] User with id [{0}] has been registered'.format(serialized_user['id']))

    return response_object
Beispiel #20
0
 def test_decode_auth_token(self):
     user = User(
         email="*****@*****.**",
         password="******",
         registered_on=datetime.datetime.utcnow(),
     )
     db.session.add(user)
     db.session.commit()
     auth_token = User.encode_auth_token(user)
     self.assertTrue(isinstance(auth_token, bytes))
     sub, scope = User.decode_auth_token(auth_token.decode("utf-8"))
     self.assertTrue(sub == user.id)
     self.assertTrue(scope == False)
 def test_encode_auth_token(self):
     user = User(
         first_name='Test',
         last_name='User',
         language='en',
         personal_phone='555-555-5555',
         email='*****@*****.**',
         password='******',
         registered_on=datetime.datetime.utcnow()
     )
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
def delete_user(data):
    try:
        User.objects(publicId=data['publicId']).delete()
        response_object = {
            'status': Const.SUCCESS,
            'message': Const.USER_DELETE_SUCCESS
        }
        return response_object, Const.SUCCESS_CODE
    except Exception as e:
        response_object = {
            'status': Const.FAIL,
            'message': e
        }
        return response_object, Const.FAILURE_CODE
def save_new_user(data):
    user = User.objects(email=data["email"])
    if not user:
        hashed_password = flask_bcrypt.generate_password_hash(
            data['password']).decode('utf-8')
        new_user = User(username=data["username"],
                        email=data["email"],
                        first_name=data["first_name"],
                        last_name=data["last_name"],
                        password=hashed_password)
        new_user.save()
        logger.debug("NEW USER CREATED: ", new_user)
        return generate_token(new_user)
    else:
        return ResponseObject.user_reg(success=False)
Beispiel #24
0
def save_new_user(data):
    public_id = str(uuid.uuid4())

    new_user = User(
        public_id=public_id,
        email=data.get('email', None),
    )
    if data.get('password', None):
        new_user.password = data.get('password', None)
    try:
        save_changes(new_user)
        data['publicId'] = public_id
        return data
    except Exception as e:
        return {'error': str(e)}
 def test_encode_auth_token(self):
     user = User(
         nickName='Alex👀',
         gender=1,
         language='zh_CN',
         city='Guangzhou',
         province='Guangdong',
         country='China',
         avatarUrl=
         'https://wx.qlogo.cn/mmopen/vi_32/xSNc6wVNtlY6z28PgU4tdJRNshhOgDlsXBuLbzGmtFSylccMFqoYaGC4RjjQjZcbsnt97KF3icHa3lFHHmH439A/132',
         registered_on=datetime.datetime.utcnow())
     db.session.add(user)
     db.session.commit()
     auth_token = User.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
def save_satellite(data, auth_header):
    id = User.decode_auth_token(auth_header)
    address = data['address']
    
    if address:

        satellite_name = data['satellite_name']
        address = data['address']
        is_active = data['is_active']
        user_id = id

        if user_id:
            satellite = Satellite(satellite_name, address, is_active, user_id)
            satellite.save()
            response = jsonify({
                'satellite_name': satellite.satellite_name,
                'created_at': satellite.created_at
            })
            response.status_code = 201
            return response
        else:
            response_object = {
                'status': 'fail',
                'message': 'satellite save action not success',
            }
            return response_object, 409
    else:
        response_object = {
            'status': 'fail',
            'message': 'Something went wrong',
        }
        return response_object, 409
def update_satellite(data, auth_header):
    user_id = User.decode_auth_token(auth_header)
    id = data['id']
    satellite = Satellite.query.filter_by(user_id=user_id,id=id).first()

    if satellite:

        satellite.satellite_name = data['satellite_name']
        satellite.address = data['address']
        satellite.is_active = data['is_active']

        satellite.save()

        response = jsonify({
            'status': 'success',
            'message': 'satellite details update action success',
            'device_name': satellite.is_active,
            'mac_address': satellite.address
        })
        response.status_code = 201
        return response
    else:
        response_object = {
            'status': 'fail',
            'message': 'satellite details update action not success',
        }
        return response_object, 409
Beispiel #28
0
def first(*args):

    if len(args[0]) < 2:
        print("Usage: python manage.py create_admin [user] [password] ")

    admin = User(public_id=str(uuid.uuid4()),
                 email="admin",
                 username=sys.argv[2],
                 password=sys.argv[3],
                 admin=True,
                 registered_on=datetime.datetime.utcnow())

    food_container = FoodContainer(food_percentage=58,
                                   capacity=2,
                                   last_filled=datetime.datetime.now())

    schd = Schedule(meal_per_day=0,
                    first_meal_hour=0,
                    first_meal_minute=0,
                    interval_hour=0,
                    interval_minute=0)

    db.session.add(admin)
    db.session.add(food_container)
    db.session.add(schd)
    db.session.commit()
Beispiel #29
0
    def get_logged_in_user(new_request):
        # get the auth token
        auth_token = new_request.headers.get('Authorization')
        auth_token = auth_token.split(" ")[1]
        if auth_token:

            resp = User.decode_auth_token(auth_token)
            if not isinstance(resp, str):
                user = User.query.filter_by(id=resp).first()
                response_object = {
                    'status': 'success',
                    'data': {
                        'user_id': user.id,
                        'admin': user.admin,
                        'registered_on': str(user.registered_on)
                    }
                }
                return response_object, 200
            response_object = {'status': 'fail', 'message': resp}
            return response_object, 401
        else:
            response_object = {
                'status': 'fail',
                'message': 'Provide a valid auth token.'
            }
            return response_object, 401
Beispiel #30
0
def save_new_user(data):
    """Saves a new user.

    Args:
        data: The user data.
    Returns:
        The response object.
    """
    user = User.query.filter_by(email=data['email']).first()
    if not user:
        new_user = User(public_id=str(uuid.uuid4()),
                        email=data['email'],
                        username=data['username'],
                        password=data['password'],
                        registered_on=datetime.datetime.utcnow())
        save_changes(new_user)
        response_object = {
            'status': 'success',
            'message': 'Successfully registered.'
        }
        return response_object, 201
    else:
        response_object = {
            'status': 'fail',
            'message': 'User already exists. Please Log in.',
        }
        return response_object, 409
Beispiel #31
0
 def test_verify_password(self):
     user = User(password='******')
     self.assertTrue(user.verify_password('test123'))