def api_send_verification_email(): """ @TODO: allow POST only @TODO: Send Verification Email to user_id :rtype: Response :return the success or failed in json format """ user_id = get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) user = UserEntity.get_by_id(1) user.email = app.config['MAIL_SENDER_SUPPORT'] try: emails.send_verification_email(user) return jsonify_success({"message": "Verification email was sent."}) except Exception as exc: details = "Connection config: {}/{}:{}".format( app.config['MAIL_USERNAME'], app.config['MAIL_SERVER'], app.config['MAIL_PORT']) app.logger.debug(details) return jsonify_error({ "message": "Unable to send email due: {} {}".format(exc, details) })
def api_deactivate_account(): """ De-activate an user. @TODO: should change expiration date too? :rtype: Response :return the success or failed in json format """ user_id = get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) user = UserEntity.update(user, active=False) return jsonify_success({"message": "User deactivated."})
def api_extend_account(): """ Change the `User.usrAccessExpiresAt` to today's date + 180 days :rtype: Response :return the success or failed in json format """ user_id = request.form.get('user_id') today_plus_180 = get_expiration_date(180) user = UserEntity.get_by_id(user_id) user = UserEntity.update(user, access_expires_at=today_plus_180) return jsonify_success( {"message": "Updated expiration date to {}".format(today_plus_180)})
def api_activate_account(): """ Activate an user. @TODO: should change expiration date too? :rtype: Response :return the success or failed in json format """ user_id = utils.get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) user = UserEntity.update(user, active=True) LogEntity.account_modified(session['uuid'], "User activated: {}".format(user)) return utils.jsonify_success({"message": "User activated."})
def api_expire_account(): """ Change the `User.usrAccessExpiresAt` to today's date and 00:00:00 time effectively blocking the user access. :rtype: Response :return the success or failed in json format """ user_id = get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) today = datetime.today() today_start = datetime(today.year, today.month, today.day) user = UserEntity.update(user, access_expires_at=today_start) return jsonify_success({"message": "User access was expired."})
def api_send_verification_email(): """ @TODO: allow POST only @TODO: Send Verification Email to user_id :rtype: Response :return the success or failed in json format """ user_id = get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) user = UserEntity.get_by_id(1) user.email = app.config['MAIL_SENDER_SUPPORT'] try: emails.send_verification_email(user) return jsonify_success({"message": "Verification email was sent."}) except Exception as exc: details = "Connection config: {}/{}:{}".format( app.config['MAIL_USERNAME'], app.config['MAIL_SERVER'], app.config['MAIL_PORT']) app.logger.debug(details) return jsonify_error({"message": "Unable to send email due: {} {}" .format(exc, details)})
def api_extend_account(): """ Change the `User.usrAccessExpiresAt` to today's date + 180 days :rtype: Response :return the success or failed in json format """ user_id = request.form.get('user_id') today_plus_180 = utils.get_expiration_date(180) user = UserEntity.get_by_id(user_id) user = UserEntity.update(user, access_expires_at=today_plus_180) # @TODO: add dedicated log type LogEntity.account_modified( session['uuid'], "Updated expiration date to {}. {}".format(today_plus_180, user.email)) return utils.jsonify_success( {"message": "Updated expiration date to {}".format(today_plus_180)})
def api_expire_account(): """ Change the `User.usrAccessExpiresAt` to today's date and 00:00:00 time effectively blocking the user access. :rtype: Response :return the success or failed in json format """ user_id = utils.get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) today = datetime.today() today_start = datetime(today.year, today.month, today.day) user = UserEntity.update(user, access_expires_at=today_start) # @TODO: add dedicated log type LogEntity.account_modified( session['uuid'], "User access was expired. {}".format(user.email)) return utils.jsonify_success({"message": "User access was expired."})
def api_extend_account(): """ Change the `User.usrAccessExpiresAt` to today's date + 180 days :rtype: Response :return the success or failed in json format """ user_id = request.form.get('user_id') today_plus_180 = utils.get_expiration_date(180) user = UserEntity.get_by_id(user_id) user = UserEntity.update(user, access_expires_at=today_plus_180) # @TODO: add dedicated log type LogEntity.account_modified(session['uuid'], "Updated expiration date to {}. {}".format( today_plus_180, user.email)) return utils.jsonify_success( {"message": "Updated expiration date to {}".format(today_plus_180)})
def api_expire_account(): """ Change the `User.usrAccessExpiresAt` to today's date and 00:00:00 time effectively blocking the user access. :rtype: Response :return the success or failed in json format """ user_id = utils.get_safe_int(request.form.get('user_id')) user = UserEntity.get_by_id(user_id) today = datetime.today() today_start = datetime(today.year, today.month, today.day) user = UserEntity.update(user, access_expires_at=today_start) # @TODO: add dedicated log type LogEntity.account_modified(session['uuid'], "User access was expired. {}".format(user.email)) return utils.jsonify_success({"message": "User access was expired."})
def api_verify_email(): """ @TODO: add column for verification hash @TODO: add counter/log to track failed attempts :rtype: Response :return the success or failed in json format """ token = request.form.get('tok') # user = UserEntity.query.filter_by(email_token=token).first() user = UserEntity.get_by_id(1) if user is None: app.logger.error("Attempt to verify email with incorrect token: {}" .format(token)) return jsonify_error({'message': 'Sorry.'}) app.logger.debug("Verified token {} for user {}".format(token, user.email)) # implement update User set usrEmailConfirmedAt = NOW() return jsonify_success({"message": "Verification email was sent."})
def api_verify_email(): """ @TODO: add column for verification hash @TODO: add counter/log to track failed attempts :rtype: Response :return the success or failed in json format """ token = request.form.get('tok') # user = UserEntity.query.filter_by(email_token=token).first() user = UserEntity.get_by_id(1) if user is None: app.logger.error( "Attempt to verify email with incorrect token: {}".format(token)) return jsonify_error({'message': 'Sorry.'}) app.logger.debug("Verified token {} for user {}".format(token, user.email)) # implement update User set usrEmailConfirmedAt = NOW() return jsonify_success({"message": "Verification email was sent."})
def api_edit_user(): """ Edit an existing user in the database TODO: Add support for reading a password field """ request_data = __extract_user_information(request) credentials = __generate_credentials(request_data["email"]) date_data = __get_date_information() user = UserEntity.get_by_id(id=request_data["usr_id"]) user.update(email=request_data["email"], first=request_data["first"], last=request_data["last"], minitial=request_data["minitial"], added_at=date_data["added_at"], modified_at=date_data["added_at"], access_expires_at=date_data["access_expires_at"], password_hash="{}:{}".format(credentials["salt"], credentials["password_hash"])) __assign_roles(request_data["roles"], user) app.logger.debug("updated user: {}".format(user)) LogEntity.account_updated(session['uuid'], user) return utils.jsonify_success({'user': user.serialize()})
def load_user(user_id): """Return the user from the database""" return UserEntity.get_by_id(user_id)