Sign-in via django-allauth: emailed one-time codes, GitHub, Discord, and Forgejo instances as OpenID Connect apps registered in admin. Regular users never have a password; sysadmins sign in only at /admin/ and are redirected there from the normal sign-in. Organizations at the URL root with owner and collaborator roles, a per-member project-create grant, and invites by username or email. Email invites carry a bearer token stored only as a hash. The last owner can't leave, be removed or be demoted. Permission checks live in intent/access.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
808 B
HTML
20 lines
808 B
HTML
{% extends "account/base_entrance.html" %}
|
|
{% comment %}
|
|
Replaces allauth's password form: regular users have no password.
|
|
The email form posts straight to the login-code view.
|
|
{% endcomment %}
|
|
{% block head_title %}Sign in{% endblock head_title %}
|
|
{% block content %}
|
|
<h1>Sign in</h1>
|
|
<form method="post" action="{% url 'account_request_login_code' %}">
|
|
{% csrf_token %}
|
|
<p>
|
|
<label for="id_email">Email address</label>
|
|
<input type="email" name="email" id="id_email" autocomplete="email" required>
|
|
</p>
|
|
{{ redirect_field }}
|
|
<p><button type="submit">Email me a sign-in code</button></p>
|
|
</form>
|
|
<p>New here? <a href="{{ signup_url }}">Create an account</a>.</p>
|
|
{% include "socialaccount/snippets/login.html" with page_layout="entrance" %}
|
|
{% endblock content %}
|