mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 03:03:13 -04:00
Merge with master.
This commit is contained in:
@@ -28,6 +28,12 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.banner-info {
|
||||||
|
@extend .banner;
|
||||||
|
background: $govuk-blue;
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
|
|
||||||
.banner-dangerous {
|
.banner-dangerous {
|
||||||
|
|
||||||
@extend .banner;
|
@extend .banner;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class UserApiClient(BaseAPIClient):
|
|||||||
self.base_url = app.config['API_HOST_NAME']
|
self.base_url = app.config['API_HOST_NAME']
|
||||||
self.client_id = app.config['ADMIN_CLIENT_USER_NAME']
|
self.client_id = app.config['ADMIN_CLIENT_USER_NAME']
|
||||||
self.secret = app.config['ADMIN_CLIENT_SECRET']
|
self.secret = app.config['ADMIN_CLIENT_SECRET']
|
||||||
self.failed_login_count = app.config["MAX_FAILED_LOGIN_COUNT"]
|
self.max_failed_login_count = app.config["MAX_FAILED_LOGIN_COUNT"]
|
||||||
|
|
||||||
def register_user(self, name, email_address, mobile_number, password):
|
def register_user(self, name, email_address, mobile_number, password):
|
||||||
data = {
|
data = {
|
||||||
@@ -25,26 +25,25 @@ class UserApiClient(BaseAPIClient):
|
|||||||
"password": password
|
"password": password
|
||||||
}
|
}
|
||||||
user_data = self.post("/user", data)
|
user_data = self.post("/user", data)
|
||||||
return User(user_data['data'], max_failed_login_count=self.failed_login_count)
|
return User(user_data['data'], max_failed_login_count=self.max_failed_login_count)
|
||||||
|
|
||||||
def get_user(self, id):
|
def get_user(self, id):
|
||||||
url = "/user/{}".format(id)
|
url = "/user/{}".format(id)
|
||||||
user_data = self.get(url)
|
user_data = self.get(url)
|
||||||
return User(user_data['data'], max_failed_login_count=self.failed_login_count)
|
return User(user_data['data'], max_failed_login_count=self.max_failed_login_count)
|
||||||
|
|
||||||
def get_users(self):
|
def get_users(self):
|
||||||
url = "/user".format()
|
users_data = self.get("/user")['data']
|
||||||
users_data = self.get(url)['data']
|
|
||||||
users = []
|
users = []
|
||||||
for user in users_data:
|
for user in users_data:
|
||||||
users.append(User(user, max_failed_login_count=self.failed_login_count))
|
users.append(User(user, max_failed_login_count=self.max_failed_login_count))
|
||||||
return users
|
return users
|
||||||
|
|
||||||
def update_user(self, user):
|
def update_user(self, user):
|
||||||
data = user.serialize()
|
data = user.serialize()
|
||||||
url = "/user/{}".format(user.id)
|
url = "/user/{}".format(user.id)
|
||||||
user_data = self.put(url, data=data)
|
user_data = self.put(url, data=data)
|
||||||
return User(user_data['data'], max_failed_login_count=self.failed_login_count)
|
return User(user_data['data'], max_failed_login_count=self.max_failed_login_count)
|
||||||
|
|
||||||
def verify_password(self, user, password):
|
def verify_password(self, user, password):
|
||||||
try:
|
try:
|
||||||
@@ -76,6 +75,7 @@ class User(object):
|
|||||||
def __init__(self, fields, max_failed_login_count=3):
|
def __init__(self, fields, max_failed_login_count=3):
|
||||||
self.fields = fields
|
self.fields = fields
|
||||||
self.max_failed_login_count = max_failed_login_count
|
self.max_failed_login_count = max_failed_login_count
|
||||||
|
self._failed_login_count = 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self):
|
def id(self):
|
||||||
@@ -114,11 +114,19 @@ class User(object):
|
|||||||
def state(self, state):
|
def state(self, state):
|
||||||
self.fields['state'] = state
|
self.fields['state'] = state
|
||||||
|
|
||||||
|
@property
|
||||||
|
def failed_login_count(self):
|
||||||
|
return self._failed_login_count
|
||||||
|
|
||||||
|
@failed_login_count.setter
|
||||||
|
def failed_login_count(self, num):
|
||||||
|
self._failed_login_count += num
|
||||||
|
|
||||||
def is_anonymous(self):
|
def is_anonymous(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def is_locked(self):
|
def is_locked(self):
|
||||||
return self.fields.get('failed_login_count') > self.max_failed_login_count
|
return self.failed_login_count > self.max_failed_login_count
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
return self.fields
|
return self.fields
|
||||||
|
|||||||
@@ -53,11 +53,11 @@
|
|||||||
<div class="column-half">
|
<div class="column-half">
|
||||||
<details class="dropdown">
|
<details class="dropdown">
|
||||||
<summary class="dropdown-toggle">
|
<summary class="dropdown-toggle">
|
||||||
Service name
|
Current service
|
||||||
</summary>
|
</summary>
|
||||||
<div>
|
<div>
|
||||||
<a href="#">Switch to A N Other service</a>
|
<a href="{{ url_for('main.choose_service') }}">Switch service</a>
|
||||||
<a href="{{ url_for('main.add_service') }}">Add a new service to GOV.UK Notify</a>
|
<a href="{{ url_for('.add_service') }}">Add a new service to GOV.UK Notify</a>
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{% macro banner(body, with_tick=False) %}
|
{% macro banner(body, type=None, with_tick=False) %}
|
||||||
<div class='banner{% if with_tick %}-with-tick{% endif %}'>
|
<div class='banner{% if type %}-{{ type }}{% endif %}{% if with_tick %}-with-tick{% endif %}'>
|
||||||
{{ body }}
|
{{ body }}
|
||||||
</div>
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
<li><a href="{{ url_for('.service_dashboard', service_id=service_id) }}">Dashboard</a></li>
|
<li><a href="{{ url_for('.service_dashboard', service_id=service_id) }}">Dashboard</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ url_for('.send_sms', service_id=service_id) }}">Send text messages</a></li>
|
<!--<li><a href="{{ url_for('.send_sms', service_id=service_id) }}">Send text messages</a></li>-->
|
||||||
<li><a href="{{ url_for('.send_email', service_id=service_id) }}">Send emails</a></li>
|
<!--<li><a href="{{ url_for('.send_email', service_id=service_id) }}">Send emails</a></li>-->
|
||||||
<li><a href="{{ url_for('.view_jobs', service_id=service_id) }}">Activity</a></li>
|
<!--<li><a href="{{ url_for('.view_jobs', service_id=service_id) }}">Activity</a></li>-->
|
||||||
<li><a href="{{ url_for('.manage_service_templates', service_id=service_id) }}">Templates</a></li>
|
<li><a href="{{ url_for('.manage_service_templates', service_id=service_id) }}">Templates</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ url_for('.api_keys', service_id=123) }}">API keys</a></li>
|
<li><a href="{{ url_for('.api_keys', service_id=service_id) }}">API keys</a></li>
|
||||||
<li><a href="{{ url_for('.documentation', service_id=123) }}">Developer documentation</a></li>
|
<li><a href="{{ url_for('.documentation', service_id=service_id) }}">Developer documentation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ url_for('.manage_users', service_id=service_id) }}">Manage users</a></li>
|
<li><a href="{{ url_for('.manage_users', service_id=service_id) }}">Manage users</a></li>
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
{% extends "admin_template.html" %}
|
{% extends "admin_template.html" %}
|
||||||
{% from "main_nav.html" import main_nav with context %}
|
{% from "components/banner.html" import banner %}
|
||||||
|
|
||||||
{% block fullwidth_content %}
|
{% block fullwidth_content %}
|
||||||
<div class="grid-row">
|
<div class="grid-row">
|
||||||
<div class="column-one-quarter">
|
<div class="column-one-quarter">
|
||||||
{% include "main_nav.html" %}
|
{% include "main_nav.html" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="column-three-quarters">
|
<div class="column-three-quarters">
|
||||||
{% block maincolumn_content %}{% endblock %}
|
{{ banner(
|
||||||
</div>
|
'You are in restricted mode. You can only send notifications to yourself.',
|
||||||
</div>
|
'info'
|
||||||
|
) }}
|
||||||
|
{% block maincolumn_content %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user