def login(): schema = UserSchema() req = request.form or request.get_json() response = dict(errors=dict(), logged_in=False, results=dict()) # Valid data or return errors try: data = schema.load(req).data except ValidationError as err: response['errors'] = err.messages return jsonify(response) users = mongo_mgr.db.users login_user = users.find_one({'username': data['username']}) if login_user: if check_password_hash(login_user['password'], data['password'].encode('utf-8')): session['username'] = data['username'] response['results'] = schema.dump(login_user) response['logged_in'] = True return json.dumps(response)
def post(self): """Create a User.""" user_schema = UserSchema() json_input = request.json obj_user, errors = user_schema.load(json_input) if errors: return jsonify({'errors': errors}), 422 try: DB.session.add(obj_user) DB.session.commit() return 'saved', 200 except Exception, e: return 'Something went wrong %s' % e, 500
def new_user(req): schema = UserSchema() response = dict(errors=dict(), logged_in=False, results=dict()) # Valid data or return errors try: data = schema.load(req).data except ValidationError as err: response['errors'] = err.messages return jsonify(response) users = mongo_mgr.db.users existing_user = users.find_one({'username': data['username']}) if existing_user is None: hash_pass = generate_password_hash(data['password']) user = dict( username=data['username'], password=hash_pass, first_name=None, last_name=None, coordinates=dict( lat=None, lng=None, ), ) add_user = users.insert_one(user) session['username'] = data['username'] response['logged_in'] = True response['results']['username'] = session['username'] response['results']['id'] = str(add_user.inserted_id) return response # User exists response['errors']['user_exists'] = 'This account already exists.' response['results'] = schema.dump(existing_user) return response
def update_user(user_id): """ Update user specified with user ID and return updated user contents Note: Always return the appropriate response for the action requested. """ schema = UserSchema() req = request.form or request.get_json() response = dict(errors=dict(), results=dict(), updated=False) data = schema.load(req) users = mongo_mgr.db.users update = users.update_one( {'_id': ObjectId(user_id)}, {'$set': data.data}, ) if update.matched_count and update.modified_count: response['updated'] = True updated_user = users.find_one({'_id': ObjectId(user_id)}) results = schema.dump(updated_user) response['results'] = results.data return jsonify(response)