How it Works ============ This package uses `FastAPI Users `_ to create an extended :class:`msdss_base_api:msdss_base_api.core.API` application. Database connection variables and engine are handled by :class:`msdss_base_database:msdss_base_database.core.Database` while async database objects are provided by `databases `_. In order to create a ``FastAPIUsers`` object, this package follows the configuration instructions `here `_, where user :any:`msdss_users_api.models`, `authentication objects `_, and database connections are passed as inputs. .. digraph:: methods compound=true; rankdir=TB; graph [pad="0.75", nodesep="0.25", ranksep="1.15"]; usermodel[label="User" shape=rect]; usercreatemodel[label="UserCreate" shape=rect]; userupdatemodel[label="UserUpdate" shape=rect]; userdbmodel[label="UserDB" shape=rect]; usertablemodel[label="UserTable" shape=rect]; usermanagermodel[label="UserManager" shape=rect]; fastapifunc[label="create_fastapi_users_objects" shape=rect style=rounded]; userdbfunc[label="create_user_db_func" shape=rect style=rounded]; usermanagerfunc[label="create_user_manager_func" shape=rect style=rounded]; getusersrouter[label="get_users_router" shape=rect style=rounded]; jwtauth[label="JWTAuthentication" shape=rect]; cookieauth[label="CookieAuthentication" shape=rect]; baseapi[label="msdss-base-api" style=filled]; basedb[label="msdss-base-database" style=filled]; databases[label="databases" style=filled]; fastapiusers[label="FastAPI Users" style=filled]; subgraph cluster0 { label=< msdss_users_api.core.UsersAPI >; style=rounded; subgraph cluster1 { label=< msdss_users_api.tools >; userdbfunc -> usermanagerfunc -> fastapifunc; } {basedb;databases} -> userdbfunc[lhead=cluster1 ltail=cluster1]; usermanagerfunc -> fastapiusers[lhead=cluster1 ltail=cluster1]; subgraph cluster2 { label=< msdss_users_api.models >; usermodel; usercreatemodel; userupdatemodel; userdbmodel; usertablemodel; usermanagermodel; }; usermanagermodel -> usermanagerfunc[lhead=cluster1 ltail=cluster2]; subgraph cluster3 { label=< fastapi_users.authentication >; jwtauth; cookieauth; } cookieauth -> usermanagerfunc[lhead=cluster1 ltail=cluster3]; fastapiusers -> getusersrouter -> baseapi; } The command line uses methods from the `FastAPI UsersManager `_ to `programmatically manage users `_. Most of these are implemented under the :mod:`msdss_users_api.tools` module, and run using :func:`msdss_users_api.cli.run`. .. digraph:: methods rankdir=TB; deleteuserfunc[label="delete_user (delete)" shape=rect style=rounded]; getuserfunc[label="get_user (get)" shape=rect style=rounded]; registeruserfunc[label="register_user (register)" shape=rect style=rounded]; resetuserfunc[label="reset_user_password (reset)" shape=rect style=rounded]; updateuserfunc[label="update_user (update)" shape=rect style=rounded]; subgraph cluster0 { label=< msdss_users_api.cli.run >; style=rounded; subgraph cluster1 { label=< msdss_users_api.tools >; rankdir=TB; deleteuserfunc; getuserfunc; registeruserfunc; resetuserfunc; updateuserfunc; }; usersapi[label="msdss_users_api.core.UsersAPI (start)" shape=rect]; }