-- PostgreSQL database dump
--
-\restrict 97QQcysG1ebcqz7Y7sN4EJb44D05KafpruWuQjJfkHpdoO21URCTKpqX39K4fwP
+\restrict WmWKbaDQfA4nBBtkMPZrgKfs3IuS4Rt4OGUXi43GEHyNlWwmMPGfl4UdQKiKmxj
-- Dumped from database version 17.7 (Debian 17.7-0+deb13u1)
-- Dumped by pg_dump version 17.7 (Debian 17.7-0+deb13u1)
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
created_by text NOT NULL,
deleted_at timestamp with time zone,
- deleted_by text
+ deleted_by text,
+ uid text NOT NULL,
+ can_impersonate boolean DEFAULT false NOT NULL
);
-- PostgreSQL database dump complete
--
-\unrestrict 97QQcysG1ebcqz7Y7sN4EJb44D05KafpruWuQjJfkHpdoO21URCTKpqX39K4fwP
+\unrestrict WmWKbaDQfA4nBBtkMPZrgKfs3IuS4Rt4OGUXi43GEHyNlWwmMPGfl4UdQKiKmxj
return self.backend.db.fetch(stmt)
- async def create(self, created_by):
+ async def create(self, uid, created_by):
"""
Creates a new API key
"""
+ # Check if the user actually exists
+ if not self.backend.users.get_by_uid(uid):
+ raise ValueError("User '%s' does not exist" % uid)
+
# Generate a new prefix
prefix = "".join(secrets.choice(ALPHABET) for _ in range(6))
prefix = prefix,
secret = secret,
created_by = created_by,
+ uid = uid,
)
# Log action
- log.info(_("A new API Key has been created by %s") % key.created_by)
+ log.info(_("A new API Key has been created for %s") % key.uid)
return key
# Deleted By
deleted_by : str | None
+ # UID
+ uid: str
+
async def check(self, secret):
"""
Checks if the provided secret matches
# Log action
log.info(_("API key %s has been deleted by %s") % (self.id, self.deleted_by))
+
+ # Permissions
+
+ can_impersonate: bool = False
# Authentication: create-api-key
create_api_key = subparsers.add_parser("create-api-key",
help=_("Creates a new API key"))
+ create_api_key.add_argument("uid",
+ help=_("The user the API key is being created for"))
create_api_key.add_argument("--created-by", required=True,
default=os.environ.get("USER"), help=_("The creator of the key"))
create_api_key.set_defaults(func=self.__create_api_key)
"""
Creates a new API key
"""
- key = await backend.auth.create(created_by=args.created_by)
+ key = await backend.auth.create(args.uid, created_by=args.created_by)
# Show the new key
print(_("Your new API key has been created: %s") % key)