def post(self):
        json_data = request.get_json()
        print(json_data)
        if not json_data:
            return {"message": "No input data provided"}

        valid = validate(json_data)
        if valid != True:
            return valid

        ln = json_data['lastname']
        fn = json_data['firstname']
        un = json_data['username']
        passw = json_data['password']
        email = json_data['email']
        # username, email, password
        # check if username exists
        # check if email exists
        # create a user
        user = User(firstname=fn,
                    lastname=ln,
                    email=email,
                    password=passw,
                    username=un)
        db.session.add(user)
        db.session.commit()

        result = user_schema.dump(user).data

        return {"message": f"Registering {result['username']}"}
Esempio n. 2
0
def login():
    req = request.json

    if (req.get('email') and req.get('password')):

        user = User.query.filter_by(email=req['email']).first()

        if (user):
            if (user and bcrypt.check_password_hash(user.password,
                                                    req['password'])):
                #things to do after checking the email and password
                token = jwt.encode(
                    {
                        'id':
                        user.id,
                        'exp':
                        datetime.datetime.utcnow() +
                        datetime.timedelta(minutes=180)
                    }, app.config['SECRET_KEY'])
                # print("token:"+token.decode('UTF-8'))
                if token:
                    resp = {'token': token, 'user': user_schema.dump(user)}
                    return jsonify(resp)
                else:
                    return jsonify({'message': 'Problem in creating a token'})
            else:
                return jsonify(
                    {'message': 'it seems that this email is not registered'})
        else:
            return jsonify({
                'message':
                'Login Unsuccesful.Please check email and password'
            })
Esempio n. 3
0
def register():
    req = request.json
    if(req.get('first_name') and req.get('email') and req.get('password')):
        # print(req['email'])
        
        user = User.query.filter_by(email= req['email']).first()

        if(user):
            return jsonify({'message':'seems like the email id is already registered'})

        password = bcrypt.generate_password_hash(req['password']).decode('utf-8')
        user1 = User(first_name=req['first_name'],last_name=req['last_name'],email=req['email'],password=password)
        db.session.add(user1)
        db.session.commit()
        token = jwt.encode({'id':user1.id,'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=180)},app.config['SECRET_KEY'])         
        # print("token:"+token.decode('UTF-8'))
        if token:
            resp = {
                'token': token,
                'user' : user_schema.dump(user1)
            } 
            return jsonify(resp)
        else:
            return jsonify({'message':'Problem in creating a token'})
    else:
        return jsonify({'message': 'please enter all the values required for the creation of a new user'})
Esempio n. 4
0
def api_datatables_get_users():
    # Store request query string
    requestData = request.args

    #datatables column index => database column name
    columns = {
        0: 'username',
        1: 'mac_address',
        2: 'is_admin'
    }
    
    #getting total number records without any search
    totalData = User.query.count()
    #when there is no search parameter then total number rows = total number filtered rows.
    totalFiltered = totalData;   

    
    if requestData['search[value]']:
        sql = "SELECT * FROM user  "
        sql += "WHERE username LIKE '" + requestData['search[value]'] + "%' "
        sql += "OR mac_address LIKE '" + requestData['search[value]'] + "%' "
        sql += "OR is_admin LIKE '" + requestData['search[value]'] + "%' "

        query = text(sql)
        result = db.engine.execute(sql).fetchall()
        #result = users_schema.dump(result)
        totalFiltered = len(result)

        sql += " ORDER BY " + columns[int(requestData['order[0][column]'])] + " " + requestData['order[0][dir]'] + " " + " LIMIT " + requestData['start'] + " ," + requestData['length'] + " "
        query = text(sql)
    else:
        sql = "SELECT * FROM user "
        sql += " ORDER BY " + columns[int(requestData['order[0][column]'])] + " " + requestData['order[0][dir]'] + " " + " LIMIT " + requestData['start'] + " ," + requestData['length'] + " "
        query = text(sql)
    
    result = db.engine.execute(query)
    data = []

    while True:
        row = result.fetchone()

        if row == None:
            break

        nestedData = {}
        user = user_schema.dump(row).data
        nestedData['DT_RowId'] = user['id']
        nestedData['username'] = user['username']
        nestedData['mac_address'] = user['mac_address']
        nestedData['is_admin'] = user['is_admin']
        nestedData['action'] = '<button class="btn btn-success" data-toggle="modal" data-target="#update-user-modal" data-id="' + str(user['id']) + '"><span class="glyphicon glyphicon-pencil"></span></button><button class="btn btn-danger" data-toggle="modal" data-target="#confirm-delete" data-id="' + str(user['id']) + '"><span class="glyphicon glyphicon-trash"></span></button>'
        data.append(nestedData)

    return jsonify({
        'draw' : int(requestData['draw']),
        'recordsTotal' : int(totalData),
        'recordsFiltered': int(totalFiltered),
        'data': data
    })
Esempio n. 5
0
    def test_get_self_user(self, testapp, db):
        user_output = user_schema.dump(db.user1)
        with patch.object(oidc, "validate_token", return_value=True), \
             patch("utils.check_user_role", return_value=db.user1):

            res = testapp.get(
                api_version + "/users",
                status=200
            ).json
            assert dict_contains(res[0], user_output)
Esempio n. 6
0
def login():
    validated_data = User.validate_login_data(request.form)
    if validated_data:
        user = user_schema.dump(request.form)
        result = User.login_user(user.data)
        if result:
            session['userid'] = result.id
            return {'status': 'logged in'}
        return {'status': 'error'}
    return {'status': 'error'}
Esempio n. 7
0
def register():
    validated_data = User.validate_user(request.form)
    if validated_data:
        user = user_schema.dump(request.form)
        create_user = User.register_user(user.data)
        if create_user:
            flash('User successfully added', 'success')
            return redirect('/')
        flash('There has been an error', 'error')
    return redirect('/')
Esempio n. 8
0
def get(user_id):
    requested_user = User.query.filter_by(id=user_id).first()

    if requested_user is None:
        raise NotFound(description=f"The requested user '{user_id}' "
                       "has not been found.")

    # if (user.role == RoleEnum.user) and (user.name != user_id):
    #     raise Forbidden

    return user_schema.dump(requested_user)
Esempio n. 9
0
    def test_get_user(self, testapp, db):
        user_output = user_schema.dump(db.user1)
        with patch.object(oidc, "validate_token", return_value=True), \
             patch("utils.check_user_role", return_value=db.admin_user):

            user_id = db.user1.name
            # Get this user by id
            user = testapp.get(
                api_version + "/users/" + user_id,
                status=200
            ).json
            assert dict_contains(user, user_output)
Esempio n. 10
0
def storeSize():
    req = request.json
    data = request.data
    user = User.query.get(data['id'])
    if (req.get('chest') and req.get('frontal') and req.get('shoulder')):
        user.chest = req.get('chest')
        user.frontal = req.get('frontal')
        user.shoulder = req.get('shoulder')
        db.session.commit()
        result = user_schema.dump(user)
        return jsonify({'user': result})
    else:
        return jsonify({'message': 'Please fill all the required fields'})
Esempio n. 11
0
    def get_all_users(self, request):
        try:
            if session['logged_in']:
                if session['admin_user']:
                    data = db.session.query(User).all()
                    data = user_schema.dump(data)
                    return jsonify(data)
                else:
                    return 'This action is restricted to admin users.'
            else:
                return 'Please log in'

        except Exception as e:
            return 'Get all users failed: ' + str(e)
Esempio n. 12
0
def protected():
    data = request.data

    user = User.query.get(data['id'])
    if user:
        # resp ={
        #     'first_name': user.first_name,
        #     'last_name' : user.last_name,
        #     'email':user.email,
        #     "id":user.id
        # }
        result = user_schema.dump(user)
        return jsonify({'user': result})
    else:
        return jsonify({'message':'This is a protected'})
Esempio n. 13
0
def search(capsule_id, offset, limit, filters, user):
    capsule = _get_capsule(capsule_id, user)

    owners = []
    user_is_owner = False
    for owner in capsule.owners:
        if user.name == owner.name:
            user_is_owner = True
        user_json = user_schema.dump(owner)
        owners.append(user_json)

    if (not user_is_owner) and (user.role == RoleEnum.user):
        raise Forbidden

    return owners
Esempio n. 14
0
 def get(self):
     users = User.query.all()
     users = user_schema.dump(users, many=True).data
     return {"status": "success", "data": users}, 200
Esempio n. 15
0
def search(user):
    return user_schema.dump(user)