add oauth2 token managment, partial password change, bugfixes
This commit is contained in:
parent
6c388c8129
commit
6334c993a9
19 changed files with 236 additions and 137 deletions
45
templates/auth/base.html.j2
Normal file
45
templates/auth/base.html.j2
Normal file
|
@ -0,0 +1,45 @@
|
|||
{% extends 'base.html.j2' %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
<nav class="navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow">
|
||||
<div class="col-xs-1"><button id="sidebarCollapse" class="btn btn-primary d-xs-block d-md-none" ><i class="fa fa-bars fa-2x"></i></button></div>
|
||||
<div class="col-xs-11"><a class="navbar-brand col-xs-11 col-sm-3 col-md-2 mr-0" href="/">Lenticular Cloud</a></div>
|
||||
</nav>
|
||||
|
||||
<div style="height: 40px"></div>
|
||||
<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">
|
||||
{% if current_user.is_authenticated %}
|
||||
<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.logout') }}">{{ gettext('Logout') }}</a></li>
|
||||
</div>
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<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 %}
|
14
templates/auth/consent.html.j2
Normal file
14
templates/auth/consent.html.j2
Normal file
|
@ -0,0 +1,14 @@
|
|||
{% extends 'auth/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Consent') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p>
|
||||
The application "{{ client.client_id }}" requested the following scopes: {{ requested_scope }}
|
||||
</p>
|
||||
<p> Allow this app to access that data?</p>
|
||||
|
||||
{{ render_form(form) }}
|
||||
|
||||
{% endblock %}
|
|
@ -1,4 +1,4 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
{% extends 'auth/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Login') }}{% endblock %}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
{% extends 'auth/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Login') }}{% endblock %}
|
||||
|
|
@ -1,62 +1,8 @@
|
|||
{% extends 'base.html.j2' %}
|
||||
|
||||
{% macro show_categories(categories) -%}
|
||||
<li>
|
||||
{% for category in categories %}
|
||||
<ul>
|
||||
<a href="{{ url_for('.sorts', category_id=category.id) }}">{{ category.name_de }}</a>
|
||||
{% if category.children %}
|
||||
{{ show_categories(category.children) }}
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</li>
|
||||
{%- endmacro %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class='messages-box'>
|
||||
</div>
|
||||
<template id='confirm-dialog-template'>
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger close" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-primary btn-ok process">Process</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div class="modal fade" id="confirm-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||
<a class="btn btn-danger btn-ok">Process</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow">
|
||||
<div class="col-xs-1"><button id="sidebarCollapse" class="btn btn-primary d-xs-block d-md-none" ><i class="fa fa-bars fa-2x"></i></button></div>
|
||||
<div class="col-xs-11"><a class="navbar-brand col-xs-11 col-sm-3 col-md-2 mr-0" href="/">Lenticular Cloud</a></div>
|
||||
|
@ -74,17 +20,17 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
<div class="row">
|
||||
{% if current_user.is_authenticated %}
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
<main class="col-md-9 ml-sm-auto col-lg-10 px-4" role="main">
|
||||
<h1>{% block title %}{% endblock %}</h1>
|
||||
|
@ -98,13 +44,6 @@
|
|||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<div class='container'>
|
||||
<div class="mt-5 row justify-content-center">
|
||||
<footer>
|
||||
<span class="text-muted">Render Time: {{ g.request_time() }}</span> | <span class="text-muted">{{ gettext('All right reserved. ©') + '2020' }}</span>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
26
templates/frontend/oauth2_tokens.html.j2
Normal file
26
templates/frontend/oauth2_tokens.html.j2
Normal file
|
@ -0,0 +1,26 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Oauth2 tokens') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<th>{{ gettext('Client ID') }}</th>
|
||||
<th>{{ gettext('Remember me') }}</th>
|
||||
<th>{{ gettext('Created at') }}
|
||||
<th>{{ gettext('Action') }}
|
||||
</thead>
|
||||
{% 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>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
9
templates/frontend/password_change.html.j2
Normal file
9
templates/frontend/password_change.html.j2
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% extends 'frontend/base.html.j2' %}
|
||||
|
||||
{% block title %}{{ gettext('Password Change') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ render_form(form)}}
|
||||
|
||||
{% endblock %}
|
|
@ -8,6 +8,27 @@
|
|||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div class='messages-box'>
|
||||
</div>
|
||||
<template id='confirm-dialog-template'>
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title"></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger close" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-primary btn-ok process">Process</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
{% block body %}{% endblock %}
|
||||
<script type="application/javascript" src="/static/main.js?v={{ GIT_HASH }}" ></script>
|
||||
<script type="application/javascript" >
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue