mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
auth: Separate development login from main login page.
This allows us to enable EmailAuthBackend by default in development without cluttering the development login experience. Fixes #3652.
This commit is contained in:
40
templates/zerver/dev_login.html
Normal file
40
templates/zerver/dev_login.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{% extends "zerver/portico.html" %}
|
||||||
|
|
||||||
|
{# Login page. #}
|
||||||
|
{% block portico_content %}
|
||||||
|
<div class="app login-page">
|
||||||
|
<div class="app-main login-page-container">
|
||||||
|
<h4 class="login-page-header">{{ _('Click on a user to log in!') }}</h4>
|
||||||
|
<form name="direct_login_form" id="direct_login_form" method="post" class="login-form"
|
||||||
|
action="{{ url('zerver.views.auth.dev_direct_login') }}">
|
||||||
|
{{ csrf_input }}
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="controls">
|
||||||
|
<p>({{ _('Administrators') }})</p>
|
||||||
|
{% for user_email in direct_admins %}
|
||||||
|
<p><input type="submit" name="direct_email" class="btn-direct btn-admin" value="{{ user_email }}" /></p>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<p>({{ _('Normal users') }})</p>
|
||||||
|
{% for user_email in direct_users %}
|
||||||
|
<p><input type="submit" name="direct_email" class="btn-direct btn-user" value="{{ user_email }}" /></p>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<p>({{ _('Community users') }})</p>
|
||||||
|
{% for user_email in community_users %}
|
||||||
|
<p><input type="submit" name="direct_email" class="btn-direct btn-user" value="{{ user_email }}" /></p>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-padder"></div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
if (window.location.hash.substring(0, 1) === "#") {
|
||||||
|
document.login_form.action += window.location.hash;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
@@ -40,15 +40,7 @@ autofocus('#id_username');
|
|||||||
|
|
||||||
<div class="app login-page">
|
<div class="app login-page">
|
||||||
<div class="app-main login-page-container">
|
<div class="app-main login-page-container">
|
||||||
|
|
||||||
{% if dev_auth_enabled %}
|
|
||||||
<h3 class="login-page-header">{{ _('Development login') }}</h3>
|
|
||||||
{% if not password_auth_enabled %}
|
|
||||||
<h4 class="login-page-subheader">Click on a user to log in!</h4>
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
<h3 class="login-page-header">{{ _('You look familiar.') }}</h3>
|
<h3 class="login-page-header">{{ _('You look familiar.') }}</h3>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if only_sso %}
|
{% if only_sso %}
|
||||||
{# SSO users don't have a password. #}
|
{# SSO users don't have a password. #}
|
||||||
@@ -116,33 +108,6 @@ autofocus('#id_username');
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if dev_auth_enabled %}
|
|
||||||
<form name="direct_login_form" id="direct_login_form" method="post" class="login-form"
|
|
||||||
action="{{ url('zerver.views.auth.dev_direct_login') }}">
|
|
||||||
{{ csrf_input }}
|
|
||||||
<div class="control-group">
|
|
||||||
{% if password_auth_enabled %}
|
|
||||||
<label for="direct_email" class="direct-label">{{ _('or Choose a user') }}:</label>
|
|
||||||
{% endif %}
|
|
||||||
<div class="controls">
|
|
||||||
<p>({{ _('Administrators') }})</p>
|
|
||||||
{% for user_email in direct_admins %}
|
|
||||||
<p><input type="submit" name="direct_email" class="btn-direct btn-admin" value="{{ user_email }}" /></p>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<p>({{ _('Normal users') }})</p>
|
|
||||||
{% for user_email in direct_users %}
|
|
||||||
<p><input type="submit" name="direct_email" class="btn-direct btn-user" value="{{ user_email }}" /></p>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<p>({{ _('Community users') }})</p>
|
|
||||||
{% for user_email in community_users %}
|
|
||||||
<p><input type="submit" name="direct_email" class="btn-direct btn-user" value="{{ user_email }}" /></p>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if google_auth_enabled %}
|
{% if google_auth_enabled %}
|
||||||
<div class="login-google">
|
<div class="login-google">
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class DocPageTest(ZulipTestCase):
|
|||||||
self._test('/features/', 'Talk about multiple topics at once')
|
self._test('/features/', 'Talk about multiple topics at once')
|
||||||
self._test('/hello/', 'workplace chat that actually improves your productivity')
|
self._test('/hello/', 'workplace chat that actually improves your productivity')
|
||||||
self._test('/integrations/', 'require creating a Zulip bot')
|
self._test('/integrations/', 'require creating a Zulip bot')
|
||||||
self._test('/login/', '(Normal users)')
|
self._test('/devlogin/', '(Normal users)')
|
||||||
self._test('/register/', 'get started')
|
self._test('/register/', 'get started')
|
||||||
|
|
||||||
result = self.client_get('/new-user/')
|
result = self.client_get('/new-user/')
|
||||||
|
|||||||
@@ -17,10 +17,16 @@ if EXTERNAL_HOST is None:
|
|||||||
else:
|
else:
|
||||||
EXTERNAL_HOST = 'localhost:9991'
|
EXTERNAL_HOST = 'localhost:9991'
|
||||||
ALLOWED_HOSTS = ['*']
|
ALLOWED_HOSTS = ['*']
|
||||||
AUTHENTICATION_BACKENDS = ('zproject.backends.DevAuthBackend',)
|
|
||||||
# Add some of the below if you're testing other backends
|
# Uncomment extra backends if you want to test with them. Note that
|
||||||
# AUTHENTICATION_BACKENDS = ('zproject.backends.EmailAuthBackend',
|
# for Google and GitHub auth you'll need to do some pre-setup.
|
||||||
# 'zproject.backends.GoogleMobileOauth2Backend',)
|
AUTHENTICATION_BACKENDS = (
|
||||||
|
'zproject.backends.DevAuthBackend',
|
||||||
|
'zproject.backends.EmailAuthBackend',
|
||||||
|
# 'zproject.backends.GitHubAuthBackend',
|
||||||
|
# 'zproject.backends.GoogleMobileOauth2Backend',
|
||||||
|
)
|
||||||
|
|
||||||
EXTERNAL_URI_SCHEME = "http://"
|
EXTERNAL_URI_SCHEME = "http://"
|
||||||
EMAIL_GATEWAY_PATTERN = "%s@" + EXTERNAL_HOST
|
EMAIL_GATEWAY_PATTERN = "%s@" + EXTERNAL_HOST
|
||||||
NOTIFICATION_BOT = "notification-bot@zulip.com"
|
NOTIFICATION_BOT = "notification-bot@zulip.com"
|
||||||
|
|||||||
@@ -3,14 +3,21 @@ from django.conf import settings
|
|||||||
import os.path
|
import os.path
|
||||||
from django.views.static import serve
|
from django.views.static import serve
|
||||||
import zerver.views.registration
|
import zerver.views.registration
|
||||||
|
import zerver.views.auth
|
||||||
|
|
||||||
# These URLs are available only in the development environment
|
# These URLs are available only in the development environment
|
||||||
|
|
||||||
use_prod_static = getattr(settings, 'PIPELINE_ENABLED', False)
|
use_prod_static = getattr(settings, 'PIPELINE_ENABLED', False)
|
||||||
static_root = os.path.join(settings.DEPLOY_ROOT, 'prod-static/serve' if use_prod_static else 'static')
|
static_root = os.path.join(settings.DEPLOY_ROOT, 'prod-static/serve' if use_prod_static else 'static')
|
||||||
|
|
||||||
urls = [url(r'^static/(?P<path>.*)$', serve, {'document_root': static_root})]
|
urls = [
|
||||||
i18n_urls = [url(r'^confirmation_key/$', zerver.views.registration.confirmation_key)]
|
url(r'^static/(?P<path>.*)$', serve, {'document_root': static_root}),
|
||||||
|
url(r'^devlogin/$', zerver.views.auth.login_page,
|
||||||
|
{'template_name': 'zerver/dev_login.html'}, name='zerver.views.auth.login_page'),
|
||||||
|
]
|
||||||
|
i18n_urls = [
|
||||||
|
url(r'^confirmation_key/$', zerver.views.registration.confirmation_key),
|
||||||
|
]
|
||||||
|
|
||||||
# These are used for voyager development. On a real voyager instance,
|
# These are used for voyager development. On a real voyager instance,
|
||||||
# these files would be served by nginx.
|
# these files would be served by nginx.
|
||||||
|
|||||||
@@ -1138,6 +1138,11 @@ else:
|
|||||||
ONLY_SSO = False
|
ONLY_SSO = False
|
||||||
AUTHENTICATION_BACKENDS += ('zproject.backends.ZulipDummyBackend',)
|
AUTHENTICATION_BACKENDS += ('zproject.backends.ZulipDummyBackend',)
|
||||||
|
|
||||||
|
# Redirect to /devlogin by default in dev mode
|
||||||
|
if DEVELOPMENT:
|
||||||
|
HOME_NOT_LOGGED_IN = '/devlogin'
|
||||||
|
LOGIN_URL = '/devlogin'
|
||||||
|
|
||||||
POPULATE_PROFILE_VIA_LDAP = bool(AUTH_LDAP_SERVER_URI)
|
POPULATE_PROFILE_VIA_LDAP = bool(AUTH_LDAP_SERVER_URI)
|
||||||
|
|
||||||
if POPULATE_PROFILE_VIA_LDAP and \
|
if POPULATE_PROFILE_VIA_LDAP and \
|
||||||
|
|||||||
@@ -125,3 +125,6 @@ REALMS_HAVE_SUBDOMAINS = bool(os.getenv('REALMS_HAVE_SUBDOMAINS', False))
|
|||||||
TERMS_OF_SERVICE = 'corporate/terms.md'
|
TERMS_OF_SERVICE = 'corporate/terms.md'
|
||||||
|
|
||||||
INLINE_URL_EMBED_PREVIEW = False
|
INLINE_URL_EMBED_PREVIEW = False
|
||||||
|
|
||||||
|
HOME_NOT_LOGGED_IN = '/login'
|
||||||
|
LOGIN_URL = '/accounts/login'
|
||||||
|
|||||||
Reference in New Issue
Block a user