""" .. module: lemur.api_keys.cli :platform: Unix :copyright: (c) 2017 by Netflix Inc., see AUTHORS for more :license: Apache, see LICENSE for more details. .. moduleauthor:: Eric Coan """ from flask_script import Manager from lemur.api_keys import service as api_key_service from lemur.auth.service import create_token from datetime import datetime manager = Manager(usage="Handles all api key related tasks.") @manager.option('-u', '--user-id', dest='uid', help='The User ID this access key belongs too.') @manager.option('-n', '--name', dest='name', help='The name of this API Key.') @manager.option('-t', '--ttl', dest='ttl', help='The TTL of this API Key. -1 for forever.') def create(uid, name, ttl): """ Create a new api key for a user. :return: """ print("[+] Creating a new api key.") key = api_key_service.create(user_id=uid, name=name, ttl=ttl, issued_at=int(datetime.utcnow().timestamp()), revoked=False) print("[+] Successfully created a new api key. Generating a JWT...") jwt = create_token(uid, key.id, key.ttl) print("[+] Your JWT is: {jwt}".format(jwt=jwt)) @manager.option('-a', '--api-key-id', dest='aid', help='The API Key ID to revoke.') def revoke(aid): """ Revokes an api key for a user. :return: """ print("[-] Revoking the API Key api key.") api_key_service.revoke(aid=aid) print("[+] Successfully revoked the api key")