{% extends "layouts/dashboard.html" %} {% block extra_head %} {{ block.super }} {% include "components/select2_multiselect_head.html" %} {% endblock %} {% block title %}New user — IILMP{% endblock %} {% block breadcrumbs %} {% endblock %} {% block content %}

New user

Add an account, set a role, and optionally link an institution.

Back to directory
{% include "components/rims_page_intro.html" with eyebrow="New user" heading="Create an account and assign a role." description="The matching Django auth group is applied from the role when you save. If you tick 'Send invitation email', the user receives a link to set their own password — otherwise share the initial password securely yourself." %}
{% csrf_token %} {% if form.non_field_errors %} {% endif %} {# ── Sign-in ── #}

Email is the username. Set an initial password (not emailed). The invitee sets their own password via the invitation link or Forgot password.

{{ form.email }} {% if form.email.errors %}

{{ form.email.errors.0 }}

{% endif %}
{{ form.password1 }} {% if form.password1.help_text %}

{{ form.password1.help_text }}

{% endif %} {% if form.password1.errors %}

{{ form.password1.errors.0 }}

{% endif %}
{{ form.password2 }} {% if form.password2.errors %}

{{ form.password2.errors.0 }}

{% endif %}
{# ── Profile ── #}

Name and phone appear in correspondence and dashboards. Institution is optional.

{{ form.first_name }} {% if form.first_name.errors %}

{{ form.first_name.errors.0 }}

{% endif %}
{{ form.last_name }} {% if form.last_name.errors %}

{{ form.last_name.errors.0 }}

{% endif %}
{{ form.phone }} {% if form.phone.help_text %}

{{ form.phone.help_text }}

{% endif %} {% if form.phone.errors %}

{{ form.phone.errors.0 }}

{% endif %}
{{ form.institution }} {% if form.institution.help_text %}

{{ form.institution.help_text }}

{% endif %} {% if form.institution.errors %}

{{ form.institution.errors.0 }}

{% endif %}
{# ── Access ── #}

Role drives permissions via its Django group. Inactive users cannot sign in.

{{ form.role }}

Drives most permission logic via its matching Django group.

{% if form.role.errors %}

{{ form.role.errors.0 }}

{% endif %}
{{ form.additional_roles }} {% if form.additional_roles.help_text %}

{{ form.additional_roles.help_text }}

{% endif %} {% if form.additional_roles.errors %}

{{ form.additional_roles.errors.0 }}

{% endif %}
{% if form.send_invitation_email.errors %}

{{ form.send_invitation_email.errors.0 }}

{% endif %}
{% if "is_staff" in form.fields %} {% endif %}
{% if form.is_active.errors or form.is_staff.errors %}
{% if form.is_active.errors %}{{ form.is_active.errors.0 }}{% endif %} {% if form.is_staff.errors %}{{ form.is_staff.errors.0 }}{% endif %}
{% endif %}
Cancel
{% endblock %} {% block extra_js %} {{ block.super }} {% include "components/select2_multiselect_init_js.html" with select_id=form.additional_roles.id_for_label placeholder="Search custom roles to add" %} {% endblock %}