2016-01-19 09:55:13 +00:00
|
|
|
|
from flask import request, render_template, redirect, url_for, flash
|
2016-01-16 10:59:16 +00:00
|
|
|
|
from flask_login import login_required
|
|
|
|
|
|
from app.main import main
|
2016-01-19 09:55:13 +00:00
|
|
|
|
from app.main.forms import CreateKeyForm
|
2016-08-10 16:49:25 +01:00
|
|
|
|
from app import api_key_api_client, current_service
|
2016-02-29 14:57:07 +00:00
|
|
|
|
from app.utils import user_has_permissions
|
2016-08-10 16:49:25 +01:00
|
|
|
|
from app.notify_client.api_key_api_client import KEY_TYPE_NORMAL, KEY_TYPE_TEST, KEY_TYPE_TEAM
|
2016-01-19 09:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-09-20 11:09:50 +01:00
|
|
|
|
@main.route("/services/<service_id>/api/keys")
|
2016-01-16 10:59:16 +00:00
|
|
|
|
@login_required
|
2016-02-29 14:57:07 +00:00
|
|
|
|
@user_has_permissions('manage_api_keys')
|
2016-01-16 10:59:16 +00:00
|
|
|
|
def api_keys(service_id):
|
2016-01-19 09:55:13 +00:00
|
|
|
|
return render_template(
|
2016-09-20 11:23:59 +01:00
|
|
|
|
'views/api/keys.html',
|
2016-01-20 17:32:55 +00:00
|
|
|
|
keys=api_key_api_client.get_api_keys(service_id=service_id)['apiKeys']
|
2016-01-19 09:55:13 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-20 11:09:50 +01:00
|
|
|
|
@main.route("/services/<service_id>/api/keys/create", methods=['GET', 'POST'])
|
2016-01-19 09:55:13 +00:00
|
|
|
|
@login_required
|
2016-02-29 14:57:07 +00:00
|
|
|
|
@user_has_permissions('manage_api_keys')
|
2016-01-19 09:55:13 +00:00
|
|
|
|
def create_api_key(service_id):
|
2016-01-21 14:15:36 +00:00
|
|
|
|
key_names = [
|
|
|
|
|
|
key['name'] for key in api_key_api_client.get_api_keys(service_id=service_id)['apiKeys']
|
|
|
|
|
|
]
|
|
|
|
|
|
form = CreateKeyForm(key_names)
|
2016-08-10 16:49:25 +01:00
|
|
|
|
form.key_type.choices = [
|
|
|
|
|
|
(KEY_TYPE_NORMAL, 'Send messages to anyone{}'.format(
|
|
|
|
|
|
', once this service is not in trial mode' if current_service['restricted'] else ''
|
|
|
|
|
|
)),
|
|
|
|
|
|
(KEY_TYPE_TEST, 'Simulate sending messages to anyone'),
|
|
|
|
|
|
(KEY_TYPE_TEAM, 'Only send messages to members of your team')
|
|
|
|
|
|
]
|
2016-01-19 09:55:13 +00:00
|
|
|
|
if form.validate_on_submit():
|
2016-07-06 15:10:36 +01:00
|
|
|
|
secret = api_key_api_client.create_api_key(
|
|
|
|
|
|
service_id=service_id,
|
|
|
|
|
|
key_name=form.key_name.data,
|
|
|
|
|
|
key_type=form.key_type.data
|
|
|
|
|
|
)
|
2016-09-20 11:23:59 +01:00
|
|
|
|
return render_template('views/api/keys/show.html', secret=secret,
|
2016-01-20 17:32:55 +00:00
|
|
|
|
key_name=form.key_name.data)
|
2016-01-19 09:55:13 +00:00
|
|
|
|
return render_template(
|
2016-09-20 11:23:59 +01:00
|
|
|
|
'views/api/keys/create.html',
|
2016-06-29 17:10:49 +01:00
|
|
|
|
form=form
|
2016-01-19 09:55:13 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-20 11:09:50 +01:00
|
|
|
|
@main.route("/services/<service_id>/api/keys/revoke/<key_id>", methods=['GET', 'POST'])
|
2016-01-19 09:55:13 +00:00
|
|
|
|
@login_required
|
2016-02-29 14:57:07 +00:00
|
|
|
|
@user_has_permissions('manage_api_keys')
|
2016-01-19 09:55:13 +00:00
|
|
|
|
def revoke_api_key(service_id, key_id):
|
2016-01-21 12:28:05 +00:00
|
|
|
|
key_name = api_key_api_client.get_api_keys(service_id=service_id, key_id=key_id)['apiKeys'][0]['name']
|
2016-01-19 09:55:13 +00:00
|
|
|
|
if request.method == 'GET':
|
2016-01-21 12:28:05 +00:00
|
|
|
|
return render_template(
|
2016-09-20 11:23:59 +01:00
|
|
|
|
'views/api/keys/revoke.html',
|
2016-01-21 12:28:05 +00:00
|
|
|
|
key_name=key_name
|
|
|
|
|
|
)
|
2016-01-19 09:55:13 +00:00
|
|
|
|
elif request.method == 'POST':
|
2016-01-20 17:32:55 +00:00
|
|
|
|
api_key_api_client.revoke_api_key(service_id=service_id, key_id=key_id)
|
2016-02-05 10:33:14 +00:00
|
|
|
|
flash('‘{}’ was revoked'.format(key_name), 'default_with_tick')
|
2016-01-19 09:55:13 +00:00
|
|
|
|
return redirect(url_for('.api_keys', service_id=service_id))
|