2016-04-25 16:28:08 +01:00
|
|
|
import uuid
|
2016-01-19 14:01:26 +00:00
|
|
|
from flask import current_app
|
2016-02-09 18:48:02 +00:00
|
|
|
from notifications_python_client.authentication import create_jwt_token
|
2016-06-23 16:45:20 +01:00
|
|
|
from app.models import ApiKey, KEY_TYPE_NORMAL
|
2016-04-25 16:28:08 +01:00
|
|
|
from app.dao.api_key_dao import (get_unsigned_secrets, save_model_api_key)
|
|
|
|
|
from app.dao.services_dao import dao_fetch_service_by_id
|
2016-01-15 16:22:03 +00:00
|
|
|
|
|
|
|
|
|
2016-05-04 16:08:23 +01:00
|
|
|
def create_authorization_header(service_id=None):
|
2016-01-19 14:01:26 +00:00
|
|
|
if service_id:
|
2016-02-02 14:16:08 +00:00
|
|
|
client_id = str(service_id)
|
2016-04-25 16:28:08 +01:00
|
|
|
secrets = get_unsigned_secrets(service_id)
|
|
|
|
|
if secrets:
|
|
|
|
|
secret = secrets[0]
|
|
|
|
|
else:
|
|
|
|
|
service = dao_fetch_service_by_id(service_id)
|
2016-06-23 16:45:20 +01:00
|
|
|
data = {
|
|
|
|
|
'service': service,
|
|
|
|
|
'name': uuid.uuid4(),
|
|
|
|
|
'created_by': service.created_by,
|
|
|
|
|
'key_type': KEY_TYPE_NORMAL
|
|
|
|
|
}
|
2016-04-25 16:28:08 +01:00
|
|
|
api_key = ApiKey(**data)
|
|
|
|
|
save_model_api_key(api_key)
|
|
|
|
|
secret = get_unsigned_secrets(service_id)[0]
|
|
|
|
|
|
2016-01-19 14:01:26 +00:00
|
|
|
else:
|
|
|
|
|
client_id = current_app.config.get('ADMIN_CLIENT_USER_NAME')
|
|
|
|
|
secret = current_app.config.get('ADMIN_CLIENT_SECRET')
|
|
|
|
|
|
2016-05-04 16:08:23 +01:00
|
|
|
token = create_jwt_token(secret=secret, client_id=client_id)
|
2016-01-15 16:22:03 +00:00
|
|
|
return 'Authorization', 'Bearer {}'.format(token)
|