def send_activation_email(user, next_url): # the activation code is valid for 1h activation = ActivationCode.create(user_id=user.id, code=random_string(30)) db.session.commit() # Send user activation email activation_link = f"{URL}/auth/activate?code={activation.code}" if next_url: LOG.d("redirect user to %s after activation", next_url) activation_link = activation_link + "&next=" + encode_url(next_url) email_utils.send_activation_email(user.email, user.name, activation_link)
def construct_url(url, args: Dict[str, str], fragment: bool = False): for i, (k, v) in enumerate(args.items()): # make sure to escape v v = encode_url(v) if i == 0: if fragment: url += f"#{k}={v}" else: url += f"?{k}={v}" else: url += f"&{k}={v}" return url
def github_login(): next_url = request.args.get("next") if next_url: redirect_uri = _redirect_uri + "?next=" + encode_url(next_url) else: redirect_uri = _redirect_uri github = OAuth2Session( GITHUB_CLIENT_ID, scope=["user:email"], redirect_uri=redirect_uri ) authorization_url, state = github.authorization_url(_authorization_base_url) # State is used to prevent CSRF, keep this for later. session["oauth_state"] = state return redirect(authorization_url)