147 lines
5.3 KiB
HTML
147 lines
5.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<title>{{ user_attrs.cn }}</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}" />
|
|
</head>
|
|
<body>
|
|
{% for category, mesg in get_flashed_messages(with_categories=True) %}
|
|
<div class="flash-message flash-message-{{ category }}">{{ mesg }}</div>
|
|
{% endfor %}
|
|
<h2>Kombilösen: {{ user_attrs.cn }}</h2>
|
|
<a href="/logout" class="btn">Logout</a><br><br>
|
|
<div class="flex flex-row">
|
|
<div>
|
|
<form method="POST" class="form-control">
|
|
<table class="table-items-top">
|
|
<tr>
|
|
<td>
|
|
Benutzername:
|
|
</td>
|
|
<td>
|
|
{{ user_attrs.uid }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Anzeigename:
|
|
</td>
|
|
<td>
|
|
<input type="text" name="cn" value="{{ user_attrs.cn }}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Nachname:
|
|
</td>
|
|
<td>
|
|
<input type="text" name="sn" value="{{ user_attrs.sn }}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>Vorname:</label>
|
|
</td>
|
|
<td>
|
|
<input type="text" name="givenName" value="{{ user_attrs.givenName }}">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>Mail:</label>
|
|
</td>
|
|
<td>
|
|
{{ user_attrs.mail }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>SIP Password:</label>
|
|
</td>
|
|
<td>
|
|
<input type="password" name="sipPassword" value="{{ user_attrs.sipPassword }}" readonly>
|
|
<button class="btn btn-warning" onclick="show_sip_password(); e.preventDefault()" type="button">Anzeigen</button>
|
|
<button class="btn btn-danger" onclick="regenerate_sip_password(); e.preventDefault()" type="button">Neu generieren</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>Zugriff auf interne Daten:</label>
|
|
</td>
|
|
<td>
|
|
{{ '✅' if user_attrs.innerCircle == True else '❌' }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>Geschützter Account:</label>
|
|
</td>
|
|
<td>
|
|
{{ '✅' if user_attrs.protectedAccount == True else '❌' }}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<button type="submit" class="btn btn-success">Speichern</button>
|
|
|
|
<h3>Passwort ändern</h3>
|
|
<table class="table-items-top">
|
|
<tr>
|
|
<td>
|
|
<label>Neues Passwort:</label>
|
|
</td>
|
|
<td>
|
|
<input type="password" name="password">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label>Neues Passwort (wiederholen):</label>
|
|
</td>
|
|
<td>
|
|
<input type="password" name="password_repeat">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<button type="submit" class="btn btn-success">Speichern</button>
|
|
|
|
<h3>SSH Public Keys</h3>
|
|
<textarea name="sshPublicKey" cols="120" rows="8" wrap="off">
|
|
{%- for key in user_attrs.sshPublicKey -%}
|
|
{{- key + '\n' }}
|
|
{%- endfor -%}
|
|
</textarea>
|
|
<br>
|
|
<button type="submit" class="btn btn-success">Speichern</button>
|
|
</form>
|
|
|
|
</div>
|
|
<div>
|
|
<h3>Gruppen</h3>
|
|
<ul>
|
|
{% for group in groups %}
|
|
<li>{{ group }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
<script>
|
|
function show_sip_password() {
|
|
document.getElementsByName("sipPassword")[0].type = document.getElementsByName("sipPassword")[0].type === "password" ? "text" : "password"
|
|
}
|
|
function regenerate_sip_password() {
|
|
document.getElementsByName("sipPassword")[0].value = generatePassword(12)
|
|
}
|
|
function generatePassword (
|
|
length = 20,
|
|
characters = '0123456789abcdefghijklmnopqrstuvwxyz'
|
|
) {
|
|
return Array.from(crypto.getRandomValues(new Uint32Array(length)))
|
|
.map((x) => characters[x % characters.length])
|
|
.join('')
|
|
}
|
|
</script>
|
|
</html>
|
|
|