diff --git a/Web/app.py b/Web/app.py
index c61ab62..22a400a 100755
--- a/Web/app.py
+++ b/Web/app.py
@@ -6688,8 +6688,8 @@ def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
- name = request.form['name']
- last_name = request.form['last-name']
+ permission_preset = (request.form.get('permission_preset') or 'standard_user').strip()
+ use_custom_permissions = request.form.get('use_custom_permissions') == 'on'
is_student = bool(request.form.get('is_student')) if cfg.STUDENT_CARDS_MODULE_ENABLED else False
student_card_id = us.normalize_student_card_id(request.form.get('student_card_id')) if cfg.STUDENT_CARDS_MODULE_ENABLED else ''
max_borrow_days_raw = request.form.get('max_borrow_days') if cfg.STUDENT_CARDS_MODULE_ENABLED else None
@@ -6703,6 +6703,17 @@ def register():
flash('Passwort ist zu schwach', 'error')
return redirect(url_for('register'))
+ action_permissions = None
+ page_permissions = None
+ if use_custom_permissions:
+ action_permissions = {}
+ for action_key, _ in PERMISSION_ACTION_OPTIONS:
+ action_permissions[action_key] = request.form.get(f'action_{action_key}') == 'on'
+
+ page_permissions = {}
+ for endpoint_name, _ in PERMISSION_PAGE_OPTIONS:
+ page_permissions[endpoint_name] = request.form.get(f'page_{endpoint_name}') == 'on'
+
max_borrow_days = None
if is_student:
if not student_card_id:
@@ -6720,11 +6731,14 @@ def register():
us.add_user(
username,
password,
- name,
- last_name,
+ username,
+ '',
is_student=is_student,
student_card_id=student_card_id if is_student else None,
- max_borrow_days=max_borrow_days
+ max_borrow_days=max_borrow_days,
+ permission_preset=permission_preset,
+ action_permissions=action_permissions,
+ page_permissions=page_permissions,
)
return redirect(url_for('home'))
return render_template(
diff --git a/Web/templates/register.html b/Web/templates/register.html
index 175f229..2834314 100755
--- a/Web/templates/register.html
+++ b/Web/templates/register.html
@@ -39,16 +39,7 @@
👤
-
-
- 👤
-
-
-
-
- 👤
-
-
+ Klarnamen werden nicht gespeichert. Ein anonymes Kürzel wird automatisch aus dem Benutzernamen erzeugt.
@@ -81,6 +72,43 @@
{% endif %}
+
+
@@ -174,7 +202,8 @@ body {
}
input[type="text"],
-input[type="password"] {
+input[type="password"],
+.form-select {
width: 100%;
padding: 0.8rem 1rem 0.8rem 3rem;
border: 1px solid #ddd;
@@ -185,12 +214,17 @@ input[type="password"] {
}
input[type="text"]:focus,
-input[type="password"]:focus {
+input[type="password"]:focus,
+.form-select:focus {
border-color: var(--primary-color);
box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.2);
outline: none;
}
+.form-select {
+ padding-left: 1rem;
+}
+
input::placeholder {
color: #aaa;
}
@@ -311,11 +345,89 @@ input::placeholder {
.richtlinen{
color: #ec0920;
}
+
+.anonymize-hint {
+ margin-top: 10px;
+ margin-bottom: 0;
+ background: #f0f9ff;
+ border: 1px solid #bae6fd;
+ border-radius: 8px;
+ padding: 10px 12px;
+ color: #0c4a6e;
+ font-size: 0.92rem;
+}
+
+.permission-panels {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
+ gap: 12px;
+}
+
+.permission-panel {
+ border: 1px solid #d1d5db;
+ border-radius: 8px;
+ padding: 10px;
+ background: #f8fafc;
+}
+
+.permission-panel h4 {
+ margin: 0 0 8px;
+ font-size: 1rem;
+ color: #1f2937;
+}
+
+.permission-check {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ margin: 4px 0;
+ color: #1f2937;
+}
-{% if student_cards_module_enabled %}
-{% endif %}
{% endblock %}
\ No newline at end of file
diff --git a/Web/user.py b/Web/user.py
index 2c1d3ae..3c38d49 100755
--- a/Web/user.py
+++ b/Web/user.py
@@ -380,7 +380,18 @@ def check_nm_pwd(username, password):
return user
-def add_user(username, password, name, last_name, is_student=False, student_card_id=None, max_borrow_days=None):
+def add_user(
+ username,
+ password,
+ name='',
+ last_name='',
+ is_student=False,
+ student_card_id=None,
+ max_borrow_days=None,
+ permission_preset='standard_user',
+ action_permissions=None,
+ page_permissions=None,
+):
"""
Add a new user to the database.
@@ -396,9 +407,16 @@ def add_user(username, password, name, last_name, is_student=False, student_card
users = db['users']
if not check_password_strength(password):
return False
- permission_defaults = build_default_permission_payload('standard_user')
+ permission_defaults = build_default_permission_payload(permission_preset)
+ if isinstance(action_permissions, dict):
+ for key, value in action_permissions.items():
+ permission_defaults['actions'][str(key)] = bool(value)
+ if isinstance(page_permissions, dict):
+ for key, value in page_permissions.items():
+ permission_defaults['pages'][str(key)] = bool(value)
- name_alias = build_name_synonym(name, last_name)
+ alias_source = name if str(name or '').strip() else username
+ name_alias = build_name_synonym(alias_source, '')
user_doc = {
'Username': username,