bugfixes, cleanup
This commit is contained in:
parent
1bf474045a
commit
17c30128ae
82 changed files with 216 additions and 76 deletions
42
lenticular_cloud/template/frontend/base.html.j2
Normal file
42
lenticular_cloud/template/frontend/base.html.j2
Normal file
|
@ -0,0 +1,42 @@
|
|||
{% extends 'base.html.j2' %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
{% for message in get_flashed_messages() %}
|
||||
<div class="alert alert-warning">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="row">
|
||||
<nav class="col-md-2 d-none d-md-block bg-light sidebar fixed-top">
|
||||
<div class="sidebar-sticky active">
|
||||
{#<a href="/"><img alt="logo" class="container-fluid" src="/static/images/dog_main_small.png"></a>#}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.index') }}">{{ gettext('Account') }}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.client_cert') }}">{{ gettext('Client Cert') }}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.totp') }}">{{ gettext('2FA - TOTP') }}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.oauth2_tokens') }}">{{ gettext('Oauth2 Tokens') }}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.password_change') }}">{{ gettext('Password Change') }}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="{{ url_for('frontend.logout') }}">{{ gettext('Logout') }}</a></li>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="col-md-9 ml-sm-auto col-lg-10 px-4" role="main">
|
||||
<h1>{% block title %}{% endblock %}</h1>
|
||||
<div class="card">
|
||||
<div class="card-body mt-5 mb-5">
|
||||
<div class="tab-content">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
60
lenticular_cloud/template/frontend/client_cert.html.j2
Normal file
60
lenticular_cloud/template/frontend/client_cert.html.j2
Normal file
|
@ -0,0 +1,60 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('client certs') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
{% for service in services.values() %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link{{' active' if loop.first else ''}}" id="home-tab" data-toggle="tab" href="#{{ service.name }}" role="tab" aria-controls="home" aria-selected="true">{{ service.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content" id="myTabContent">
|
||||
{% for service in services.values() if service.client_cert %}
|
||||
|
||||
<div class="tab-pane fade{{ ' show active' if loop.first else '' }}" id="{{ service.name }}" role="tabpanel" aria-labelledby="{{ service.name }}-tab">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>not valid before</th>
|
||||
<th>not valid after</th>
|
||||
<th>serial_number<th>
|
||||
<th> <th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for cert in client_certs[service.name] %}
|
||||
<tr {{ 'class="table-warning"' if not cert.is_valid else ''}}>
|
||||
<td>{{ cert.not_valid_before }}</td>
|
||||
<td>{{ cert.not_valid_after }}</td>
|
||||
<td>{{ cert.serial_number_hex }}</td>
|
||||
<td>
|
||||
<a title="{{ gettext('Download') }}" href="{{ url_for('.get_client_cert', service_name=service.name, serial_number=cert.serial_number_hex) }}"><i class="fas fa-file-download"></i></a>
|
||||
|
||||
{% if cert.is_valid %}
|
||||
<a title="{{ gettext('Revoke')}}" href="{{ url_for('.revoke_client_cert', service_name=service.name, serial_number=cert.serial_number_hex) }}" onclick="client_cert.revoke_certificate(this.href, '{{ cert.serial_number_hex }}'); return false;"><i class="fas fa-ban"></i></a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<a class="btn btn-primary" href="{{ url_for('frontend.client_cert_new', service_name=service.name) }}">
|
||||
New Certificate
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block script_js %}
|
||||
|
||||
client_cert.init_list();
|
||||
|
||||
|
||||
{% endblock %}
|
45
lenticular_cloud/template/frontend/client_cert_new.html.j2
Normal file
45
lenticular_cloud/template/frontend/client_cert_new.html.j2
Normal file
|
@ -0,0 +1,45 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('new client cert - {service_name}').format(service_name=service.name) }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div id="sign-key">
|
||||
<h4>Sign Public Key</h4>
|
||||
{{ render_form(form) }}
|
||||
</div>
|
||||
<div id="gen-key">
|
||||
<h4>Generate new key in the browser</h4>
|
||||
<div id="gen-key-sign" style="display: none">
|
||||
{{ render_form(form) }}
|
||||
</div>
|
||||
<form id="gen-key-form">
|
||||
<div class="form-group">
|
||||
<label for="valid_time" class="control-label ">Key Password for .p12 (optional)</label>
|
||||
<div class="">
|
||||
<input class="form-control" id="cert-password" type="password" name="password"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="valid_time" class="control-label ">Key Size</label>
|
||||
<div class="">
|
||||
<select id="key-size" class="custom-select">
|
||||
<option value="4096" selected>4096</option>
|
||||
<option value="2048">2048</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group ">
|
||||
<label for="valid_time" class="control-label ">valid time in days</label>
|
||||
<div class="">
|
||||
<input class="form-control" name="valid_time" required type="text" value="365">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<button id="generate-key" class="btn btn-primary" onclick="client_cert.generate_private_key()">Generate Key</button>
|
||||
<a style="display: none" id="save-button" download="lenticular_cloud_{{ service.name }}.p12" class="btn btn-primary">Save Keypair</a>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
0
lenticular_cloud/template/frontend/fido2.html.j2
Normal file
0
lenticular_cloud/template/frontend/fido2.html.j2
Normal file
2
lenticular_cloud/template/frontend/index.html.j2
Normal file
2
lenticular_cloud/template/frontend/index.html.j2
Normal file
|
@ -0,0 +1,2 @@
|
|||
|
||||
{% extends 'frontend/base.html.j2' %}
|
31
lenticular_cloud/template/frontend/oauth2_tokens.html.j2
Normal file
31
lenticular_cloud/template/frontend/oauth2_tokens.html.j2
Normal file
|
@ -0,0 +1,31 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Oauth2 tokens') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ gettext('Client ID') }}</th>
|
||||
<th>{{ gettext('Remember') }}</th>
|
||||
<th>{{ gettext('Created at') }}
|
||||
<th>{{ gettext('Action') }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for consent_session in consent_sessions %}
|
||||
<tr>
|
||||
<td>{{ consent_session.consent_request.client.client_id }}</td>
|
||||
<td>{{ consent_session.remember }}</td>
|
||||
<td>{{ consent_session.handled_at }}</td>
|
||||
<td>
|
||||
<a title="{{ gettext('Revoke')}}" href="{{ url_for('.oauth2_token_revoke', client_id=consent_session.consent_request.client.client_id) }}" onclick="oauth2_token.revoke(this.href, '{{ consent_session.consent_request.client.client_id }}'); return false;"><i class="fas fa-ban"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,21 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Oauth2 Request') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="container">
|
||||
<p>
|
||||
A service ask for access to your account data.<br>
|
||||
</p>
|
||||
<p>
|
||||
<b> Requested Scopes: {{ auth_req['scope'] }}</b>
|
||||
</p>
|
||||
<p>
|
||||
You can confirm this pressing "Continue"
|
||||
</p>
|
||||
|
||||
{{ render_form(form) }}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
16
lenticular_cloud/template/frontend/password_change.html.j2
Normal file
16
lenticular_cloud/template/frontend/password_change.html.j2
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Password Change') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ render_form(form)}}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block script_js %}
|
||||
|
||||
password_change.init();
|
||||
|
||||
|
||||
{% endblock %}
|
35
lenticular_cloud/template/frontend/totp.html.j2
Normal file
35
lenticular_cloud/template/frontend/totp.html.j2
Normal file
|
@ -0,0 +1,35 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('2FA - TOTP') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>name</th>
|
||||
<th>created_at</th>
|
||||
<th>action<th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for totp in current_user.totps %}
|
||||
<tr>
|
||||
<td>{{ totp.name }}</td>
|
||||
<td>{{ totp.created_at }}</td>
|
||||
<td>{{ render_form(delete_form, action_url=url_for('frontend.totp_delete', totp_name=totp.name)) }}</td>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<a class="btn btn-default" href="{{ url_for('frontend.totp_new') }}">
|
||||
New TOTP
|
||||
</a>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block script_js %}
|
||||
|
||||
totp.init_list();
|
||||
|
||||
|
||||
{% endblock %}
|
20
lenticular_cloud/template/frontend/totp_new.html.j2
Normal file
20
lenticular_cloud/template/frontend/totp_new.html.j2
Normal file
|
@ -0,0 +1,20 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('2FA - TOTP - New') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ render_form(form) }}
|
||||
|
||||
<div id="svg-container">
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block script_js %}
|
||||
|
||||
totp.init_new();
|
||||
|
||||
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue