Development
This commit is contained in:
parent
43c4cf380d
commit
f011594b04
10 changed files with 163 additions and 46 deletions
|
|
@ -187,8 +187,12 @@ def addedit():
|
|||
|
||||
enabled = 'enabled' in request.form
|
||||
session_seconds = _parse_session_seconds(
|
||||
request.form.get('session_seconds_value', ''),
|
||||
request.form.get('session_seconds_unit', 'hours'),
|
||||
request.form.get('session_duration_value', ''),
|
||||
request.form.get('session_duration_unit', 'hours'),
|
||||
)
|
||||
expires_seconds = _parse_session_seconds(
|
||||
request.form.get('expiration_duration_value', ''),
|
||||
request.form.get('expiration_duration_unit', 'hours'),
|
||||
)
|
||||
|
||||
if not username:
|
||||
|
|
@ -223,10 +227,10 @@ def addedit():
|
|||
conn.execute(
|
||||
"""UPDATE credentials
|
||||
SET username=?, password=?, description=?, user_type=?, digest_type=?,
|
||||
vlan=?, enabled=?, date_set=?, session_seconds=?
|
||||
vlan=?, enabled=?, date_set=?, session_seconds=?, expires_seconds=?
|
||||
WHERE id=?""",
|
||||
(username, stored_password, description, user_type, stored_digest_type,
|
||||
vlan, int(enabled), date_set, session_seconds, existing['id']),
|
||||
vlan, int(enabled), date_set, session_seconds, expires_seconds, existing['id']),
|
||||
)
|
||||
conn.commit()
|
||||
except sqlite3.IntegrityError:
|
||||
|
|
@ -255,7 +259,7 @@ def addedit():
|
|||
(username, password, description, user_type, digest_type, vlan, enabled, date_set, session_seconds, expires_seconds)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
|
||||
(username, hashed, description, user_type, digest_type,
|
||||
vlan, int(enabled), int(time.time()), session_seconds, 0),
|
||||
vlan, int(enabled), int(time.time()), session_seconds, expires_seconds),
|
||||
)
|
||||
conn.commit()
|
||||
except sqlite3.IntegrityError:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
{
|
||||
"type": "card",
|
||||
"id": "add-form",
|
||||
"label": "Add Credential",
|
||||
"label": "Add User Account",
|
||||
"client_requirement": "client_is_administrator+",
|
||||
"items": [
|
||||
{
|
||||
|
|
@ -91,13 +91,14 @@
|
|||
},
|
||||
{
|
||||
"type": "field",
|
||||
"label": "Credential Active",
|
||||
"label": "Account Active",
|
||||
"name": "enabled",
|
||||
"input_type": "checkbox"
|
||||
"input_type": "checkbox",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"type": "raw_html",
|
||||
"html": "<script id=\"captive-vlan-data\" type=\"application/json\">%CAPTIVE_VLAN_OPTIONS%</script><script id=\"page-flags\" type=\"application/json\">{\"pro\": %PRO_LICENSE_JS%, \"radius_session_seconds\": %RADIUS_DEFAULT_SESSION_SECONDS_JS%}</script>"
|
||||
"html": "<script id=\"captive-vlan-data\" type=\"application/json\">%CAPTIVE_VLAN_OPTIONS%</script><script id=\"page-flags\" type=\"application/json\">{\"pro\": %PRO_LICENSE_JS%, \"radius_session_seconds\": %RADIUS_DEFAULT_SESSION_SECONDS_JS%, \"radius_expiration_seconds\": %RADIUS_DEFAULT_EXPIRATION_SECONDS_JS%}</script>"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
|
|
@ -170,17 +171,42 @@
|
|||
"items": [
|
||||
{
|
||||
"type": "field",
|
||||
"label": "Valid For",
|
||||
"name": "session_seconds_value",
|
||||
"label": "Session Duration",
|
||||
"name": "session_duration_value",
|
||||
"input_type": "number",
|
||||
"min": 0,
|
||||
"value": "0",
|
||||
"hint": "How long this credential is valid after creation. 0 = no expiration."
|
||||
"hint": "0 = no session limit"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"label": "Unit",
|
||||
"name": "session_seconds_unit",
|
||||
"name": "session_duration_unit",
|
||||
"input_type": "select",
|
||||
"options": [
|
||||
{"value": "hours", "label": "Hours"},
|
||||
{"value": "days", "label": "Days"}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "field_row",
|
||||
"cols": 2,
|
||||
"items": [
|
||||
{
|
||||
"type": "field",
|
||||
"label": "Expiration Duration",
|
||||
"name": "expiration_duration_value",
|
||||
"input_type": "number",
|
||||
"min": 0,
|
||||
"value": "0",
|
||||
"hint": "How long after creation an account is valid before it permanently expires. 0 = never expires."
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"label": "Unit",
|
||||
"name": "expiration_duration_unit",
|
||||
"input_type": "select",
|
||||
"options": [
|
||||
{"value": "hours", "label": "Hours"},
|
||||
|
|
|
|||
|
|
@ -71,6 +71,9 @@ def collect_tokens(cfg):
|
|||
tokens['RADIUS_DEFAULT_SESSION_SECONDS_JS'] = str(
|
||||
cfg.get('radius', {}).get('options', {}).get('default_session_seconds', 0) or 0
|
||||
)
|
||||
tokens['RADIUS_DEFAULT_EXPIRATION_SECONDS_JS'] = str(
|
||||
cfg.get('radius', {}).get('options', {}).get('default_expiration_seconds', 0) or 0
|
||||
)
|
||||
|
||||
vlans = [v for v in cfg.get('vlans', []) if not v.get('is_vpn')]
|
||||
tokens['VLAN_OPTIONS'] = json.dumps(
|
||||
|
|
@ -84,10 +87,12 @@ def collect_tokens(cfg):
|
|||
{
|
||||
'value': v['name'],
|
||||
'label': f"{v['name']} (VLAN {v['vlan_id']})",
|
||||
'require_upw': v.get('captive_portal', {}).get('require_username_password',
|
||||
v.get('require_username_password', False)),
|
||||
'default_session_seconds': v.get('captive_portal', {}).get('default_session_seconds',
|
||||
v.get('default_session_seconds', 0)),
|
||||
'require_upw': v.get('captive_portal', {}).get('require_username_password',
|
||||
v.get('require_username_password', False)),
|
||||
'default_session_seconds': v.get('captive_portal', {}).get('default_session_seconds',
|
||||
v.get('default_session_seconds', 0)),
|
||||
'default_expiration_seconds': v.get('captive_portal', {}).get('default_expiration_seconds',
|
||||
v.get('default_expiration_seconds', 0)),
|
||||
}
|
||||
for v in captive_vlans
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue