def user_info(): email, api_key, err_response = auth_request_get_single_param(db, "email") if err_response: return err_response if not email: email = api_key.user.email else: email = email.lower() user = User.from_email(db.session, email) if not user: time.sleep(5) return bad_request(web_utils.AUTH_FAILED) if user == api_key.user: balance = paydb_core.user_balance(db.session, api_key) roles = [role.name for role in api_key.user.roles] perms = [perm.name for perm in api_key.permissions] return jsonify( dict(email=user.email, balance=balance, photo=user.photo, photo_type=user.photo_type, roles=roles, permissions=perms)) return jsonify( dict(email=user.email, balance=-1, photo=user.photo, photo_type=user.photo_type, roles=[], permissions=[]))
def referral_claim(): if not use_referrals: return bad_request(web_utils.NOT_AVAILABLE) token, api_key, err_response = auth_request_get_single_param(db, "token") if err_response: return err_response if not api_key.user.has_role( Role.ROLE_ADMIN) and not api_key.user.has_role( Role.ROLE_REFERRAL_CLAIMER): return bad_request(web_utils.UNAUTHORIZED) ref = Referral.from_token(db.session, token) if not ref: return bad_request(web_utils.NOT_FOUND) if ref.status != ref.STATUS_CREATED: return bad_request(web_utils.NOT_FOUND) # send referral rewards category = Category.from_name(db.session, Category.CATEGORY_REFERRAL) if not category: return bad_request(web_utils.INVALID_CATEGORY) if ref.reward_sender <= 0: return bad_request(web_utils.INVALID_AMOUNT) if ref.reward_recipient_type == ref.REWARD_TYPE_FIXED and ref.reward_recipient <= 0: return bad_request(web_utils.INVALID_AMOUNT) reason = f'{ref.token}: reward for referral' _reward_create(api_key.user, reason, category, ref.recipient, ref.reward_sender, 'Thank you for referring a friend') if ref.reward_recipient_type == ref.REWARD_TYPE_FIXED: _reward_create(api_key.user, reason, category, ref.recipient, ref.reward_recipient, 'Thank you for using our service') ref.status = ref.STATUS_CLAIMED db.session.add(ref) db.session.commit() return jsonify(dict(referral=ref.to_json()))
def referral_create(): if not use_referrals: return bad_request(web_utils.NOT_AVAILABLE) recipient, api_key, err_response = auth_request_get_single_param( db, "recipient") if err_response: return err_response if not utils.is_email(recipient): return bad_request(web_utils.INVALID_EMAIL) recipient = recipient.lower() user = User.from_email(db.session, recipient) if user: time.sleep(5) return bad_request(web_utils.USER_EXISTS) reward_sender_type = app.config["REFERRAL_REWARD_TYPE_SENDER"] reward_sender = app.config["REFERRAL_REWARD_SENDER"] reward_recipient_type = app.config["REFERRAL_REWARD_TYPE_RECIPIENT"] reward_recipient = app.config["REFERRAL_REWARD_RECIPIENT"] recipient_min_spend = app.config["REFERRAL_RECIPIENT_MIN_SPEND"] ref = Referral(api_key.user, recipient, reward_sender_type, reward_sender, reward_recipient_type, reward_recipient, recipient_min_spend) utils.email_referral(logger, ref) db.session.add(ref) db.session.commit() return 'ok'
def transaction_info(): token, api_key, err_response = auth_request_get_single_param(db, "token") if err_response: return err_response tx = PayDbTransaction.from_token(db.session, token) if not tx: return bad_request(web_utils.INVALID_TX) if tx.sender != api_key.user and tx.recipient != api_key.user: return bad_request(web_utils.UNAUTHORIZED) return jsonify(dict(tx=tx.to_json()))
def referral_remind(): if not use_referrals: return bad_request(web_utils.NOT_AVAILABLE) token, api_key, err_response = auth_request_get_single_param(db, "token") if err_response: return err_response ref = Referral.from_token_user(db.session, token, api_key.user) if not ref: return bad_request(web_utils.NOT_FOUND) if ref.status != ref.STATUS_CREATED: return bad_request(web_utils.NOT_FOUND) utils.email_referral(logger, ref) return 'ok'
def user_update_email(): email, api_key, err_response = auth_request_get_single_param(db, "email") if err_response: return err_response if not email: return bad_request(web_utils.INVALID_EMAIL) email = email.lower() user = User.from_email(db.session, email) if user: time.sleep(5) return bad_request(web_utils.USER_EXISTS) req = UserUpdateEmailRequest(api_key.user, email) utils.email_user_update_email_request(logger, req, req.MINUTES_EXPIRY) db.session.add(req) db.session.commit() return 'ok'
def referral_validate(): if not use_referrals: return bad_request(web_utils.NOT_AVAILABLE) token, api_key, err_response = auth_request_get_single_param(db, "token") if err_response: return err_response if not api_key.user.has_role( Role.ROLE_ADMIN) and not api_key.user.has_role( Role.ROLE_REFERRAL_CLAIMER): return bad_request(web_utils.UNAUTHORIZED) ref = Referral.from_token(db.session, token) if not ref: return bad_request(web_utils.NOT_FOUND) if ref.status != ref.STATUS_CREATED: return bad_request(web_utils.NOT_FOUND) return jsonify(dict(referral=ref.to_json()))