Added "Switch user" functionality.
The user isn't logged out until the new user logs in. This allows you to click on "Log in as different user", hit the back button, and still be logged in.
This commit is contained in:
parent
c3eb97e24c
commit
095f1cda0c
@ -284,3 +284,12 @@ def fetch_blenderid_user() -> dict:
|
||||
|
||||
def setup_app(app, url_prefix):
|
||||
app.register_api_blueprint(blender_id, url_prefix=url_prefix)
|
||||
|
||||
|
||||
def switch_user_url(next_url: str) -> str:
|
||||
from urllib.parse import quote
|
||||
|
||||
base_url = '%s/switch' % blender_id_endpoint()
|
||||
if next_url:
|
||||
return '%s?next=%s' % (base_url, quote(next_url))
|
||||
return base_url
|
||||
|
@ -107,6 +107,23 @@ def logout():
|
||||
return redirect('/')
|
||||
|
||||
|
||||
@blueprint.route('/switch')
|
||||
def switch():
|
||||
from pillar.api import blender_id
|
||||
|
||||
# Without this URL, the Cloud will redirect to the HTTP Referrer, which is the Blender ID
|
||||
# 'switch user' page. We need to explicitly send the user to the homepage to prevent this.
|
||||
next_url_after_cloud_login = url_for('main.homepage')
|
||||
|
||||
# Without this URL, the user will remain on the Blender ID site. We want them to come
|
||||
# back to the Cloud after switching users.
|
||||
next_url_after_bid_login = url_for('users.login',
|
||||
next=next_url_after_cloud_login,
|
||||
_external=True)
|
||||
|
||||
return redirect(blender_id.switch_user_url(next_url=next_url_after_bid_login))
|
||||
|
||||
|
||||
@blueprint.route('/settings/profile', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def settings_profile():
|
||||
|
@ -299,6 +299,11 @@ html(lang="en")
|
||||
| Subscription
|
||||
li.divider(role="separator")
|
||||
| {% endif %}
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('users.switch') }}")
|
||||
i.pi-log-out(title="Log Out")
|
||||
| Not {{ current_user.full_name }}? Log in as another user
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('users.logout') }}")
|
||||
|
Loading…
x
Reference in New Issue
Block a user