openpanel/templates/tabler/users/add.html

204 lines
12 KiB
HTML

<!-- users/add.html -->
{% extends 'base.html' %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header mt-0 d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
OpenPanel
</div>
<h2 class="page-title">
Add New User
</h2>
</div>
<!-- Page title actions -->
<div class="col-auto ms-auto d-print-none">
<div class="btn-list">
<span class="d-none d-sm-inline">
<div class="input-icon">
</div>
</span>
</div>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="mb-4 card" id="collapseAddNewUser">
<style>
@keyframes rotate {
to {
--angle: 360deg
}
}
@property --angle {
syntax: "<angle>";
initial-value: 0deg;
inherits: false
}
.CrawlerStatusCard.active {
animation: rotate 2s linear infinite;
background: hsla(0,0%,100%,.5);
border: 2px solid transparent;
border-image: conic-gradient(from var(--angle),transparent 0deg 90deg,transparent 90deg 180deg,transparent 180deg 270deg,#0077bc 270deg 1turn) 1 stretch;
}
</style>
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs nav-fill" data-bs-toggle="tabs" role="tablist">
<li class="nav-item" role="presentation">
<a href="#tabs-create-user" class="nav-link active" data-bs-toggle="tab" aria-selected="true" role="tab" tabindex="-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-user-plus"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0" /><path d="M16 19h6" /><path d="M19 16v6" /><path d="M6 21v-2a4 4 0 0 1 4 -4h4" /></svg> &nbsp; Create User</a>
</li>
<li class="nav-item" role="presentation">
<a href="#tabs-import-user" class="nav-link" data-bs-toggle="tab" aria-selected="false" role="tab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-user-down"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0" /><path d="M6 21v-2a4 4 0 0 1 4 -4h4c.342 0 .674 .043 .99 .124" /><path d="M19 16v6" /><path d="M22 19l-3 3l-3 -3" /></svg> &nbsp; Import User</a>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane active show" id="tabs-create-user" role="tabpanel">
<!-- Form for adding new users -->
<div id="create_user_form" class="container" style="display:block;">
<div class="row">
<div class="col-md-6 offset-md-3">
<h2 class="mb-3">Create a New User</h2>
<p></p>
<form id="userForm">
<div class="form-group">
<label for="admin_email">Email address:</label>
<div class="input-group mb-2">
<input type="email" class="form-control" name="admin_email" id="admin_email" autofocus required>
<span class="input-group-text" title="Email login information to the user" data-bs-toggle="tooltip" data-bs-placement="top">
<input class="form-check-input m-0" name="send_email" type="checkbox">&nbsp; send email
</span>
</div>
</div>
<div class="form-group">
<label for="plan_name">Plan:</label>
<div class="input-group">
<select class="form-select" size="3" name="plan_name" id="plan_name" aria-label="size 3 select plan_name" required>
{% for plan in plans %}
<option value="{{ plan.name }}" {% if loop.first %}selected{% endif %}>{{ plan.name }} - {{ plan.description }} (docker image: {{ plan.docker_image }})</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group row">
<div class="col-md-6">
<label for="admin_username">Username:</label>
<input type="text" class="form-control" min="3" max="16" minlength="3" maxlength="16" name="admin_username" id="admin_username" required pattern="[a-zA-Z0-9]{3,16}" title="Can only contain letters and numbers. 3 characters min. - 16 max.">
</div>
<div class="col-md-6">
<label for="admin_password">Password:</label>
<div class="input-group">
<input type="password" class="form-control" name="admin_password" id="admin_password" required minlength="6" maxlength="30" pattern="[^']{6,30}" title="Can not contain apostrophe. 6 characters min. - 30 max.">
<div class="input-group-append">
<button class="btn btn-outline-success" type="button" id="generatePassword" tabindex="-1">
Generate
</button>
<button class="btn btn-outline-secondary" tabindex="-1" type="button" id="togglePassword">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" style="margin:0;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-eye"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /><path d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" /></svg>
</button>
</div>
</div>
</div>
</div>
<br>
<button type="button" class="btn btn-primary" id="CreateUserButton" {% if users | length >= 3 %}data-bs-toggle="tooltip" data-bs-placement="top" title="OpenPanel Community edition has a limit of 3 user accounts. Remove account or upgrade to Enterprise"{% endif %}>Create User</button>
</form>
</div>
</div>
</div>
<div id="scrollinglogAreaDiv" class="card d-none mt-2 CrawlerStatusCard" style="height:20rem; overflow-y: auto;">
<div class="card-body card-body-scrollable card-body-scrollable-shadow" style="overflow: auto; display: flex; flex-direction: column-reverse;">
<div class="divide-y" style="display: flex;">
<span id="statusMessage"></span>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tabs-import-user" role="tabpanel">
<!-- Form for importing users -->
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3">
<h2 class="mb-3">Import User from cPanel <span class="badge badge-sm bg-green-lt text-uppercase ms-auto">New</span></h2>
<p></p>
<form id="userimportForm" method="POST" action="/import/cpanel">
<div class="form-group">
<label for="admin_email">Backup file:</label>
<input type="text" class="form-control" id="path" name="path" required>
</div>
<div class="form-group">
<label for="plan_name">Plan:</label>
<div class="input-group">
<select class="form-select" size="3" name="plan_name" id="plan_name" aria-label="size 3 select plan_name" required>
{% for plan in plans %}
<option value="{{ plan.name }}" {% if loop.first %}selected{% endif %}>{{ plan.name }} - {{ plan.description }} (docker image: {{ plan.docker_image }})</option>
{% endfor %}
</select>
</div>
</div>
<br>
<button type="submit" class="btn btn-primary" id="ImportUserButton" {% if users | length >= 3 %}data-bs-toggle="tooltip" data-bs-placement="top" title="OpenPanel Community edition has a limit of 3 user accounts. Remove account or upgrade to Enterprise"{% endif %}>Import from Backup</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="{{ url_for('static', filename='pages/users_add.js') }}?v=0.39" defer></script>
{% endblock %}