tools

create_fastapi_users_objects

msdss_users_api.tools.create_fastapi_users_objects(user_manager_settings={}, jwt_settings={'lifetime_seconds': 900, 'tokenUrl': 'auth/jwt/login'}, cookie_settings={'lifetime_seconds': 2592000}, database=<msdss_base_database.core.Database object>, enable_cookie=True, enable_jwt=True, cookie=None, jwt=None, Base=<class 'sqlalchemy.orm.decl_api.Base'>, User=<class 'msdss_users_api.models.User'>, UserCreate=<class 'msdss_users_api.models.UserCreate'>, UserUpdate=<class 'msdss_users_api.models.UserUpdate'>, UserDB=<class 'msdss_users_api.models.UserDB'>, UserTable=<class 'msdss_users_api.models.UserTable'>, UserManager=None)[source]

Creates all the needed dependencies and models to build a FastAPIUsers object.

Parameters
Returns

A dictionary containing the following:

Return type

dict

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Setup user manager secrets
user_manager_settings = dict(
    reset_password_token_secret='reset-secret', # CHANGE TO STRONG PHRASE
    verification_token_secret='verify-secret' # CHANGE TO STRONG PHRASE
)

# Setup jwt and cookie secret
jwt_settings = dict(secret='jwt-secret') # CHANGE TO STRONG PHRASE
cookie_settings = dict(secret='cookie-secret') # CHANGE TO STRONG PHRASE

# Create FastAPI Users object
fastapi_users_objects = create_fastapi_users_objects(
    user_manager_settings=user_manager_settings,
    jwt_settings=jwt_settings,
    cookie_settings=cookie_settings
)

# Get FastAPI Users Object
fastapi_users = fastapi_users_objects['FastAPIUsers']

create_user_db_context

msdss_users_api.tools.create_user_db_context(database=<msdss_base_database.core.Database object>, *args, **kwargs)[source]

Create a context manager for an auto-configured msdss_users_api.tools.create_user_db_func() function.

Parameters
Returns

Returns a dictionary with the following keys:

Return type

dict

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

results = create_user_db_context()
get_user_db_context = results['get_user_db_context']
async_database = results['async_database']

create_user_db_func

msdss_users_api.tools.create_user_db_func(database_engine, async_database=None, Base=<class 'sqlalchemy.orm.decl_api.Base'>, UserTable=<class 'msdss_users_api.models.UserTable'>, UserDB=<class 'msdss_users_api.models.UserDB'>)[source]

Create a function to return the the database adapter dependency.

See SQLAlchemy configuration for FastAPI Users,

Parameters
Returns

A function yielding a fastapi_users:fastapi_users.db.SQLAlchemyUserDatabase.

Return type

func

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import databases

from msdss_base_database import Database
from msdss_users_api.tools import create_user_db_func

# Create a database object
db = Database()._connection

# Get the user db func
get_user_db = create_user_db_func(db)

create_user_manager

msdss_users_api.tools.create_user_manager(reset_password_token_secret, verification_token_secret, __base__=<class 'msdss_users_api.managers.UserManager'>, *args, **kwargs)[source]

Create a function to return the the user manager class.

See UserManager configuration for FastAPI Users,

Parameters
Returns

A configured msdss_users_api.managers.UserManager.

Return type

msdss_users_api.managers.UserManager

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import create_user_manager

UserManager = create_user_manager('msdss-reset-secret', 'msdss-verify-secret')

create_user_manager_context

msdss_users_api.tools.create_user_manager_context(get_user_db, user_manager_settings={}, UserManager=None, load_env=True, env=<msdss_users_api.env.UsersDotEnv object>)[source]

Create a context manager for an auto-configured msdss_users_api.tools.create_user_manager_func() function.

Parameters
Returns

Function returned from contextlib.asynccontextmanager() created from an auto-configured msdss_users_api.tools.create_user_manager_func() function.

Return type

contextlib.asynccontextmanager()

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Create a database object
db = Database()._connection

# Get the user db func
get_user_db = create_user_db_func(db)

# Create user manager secrets
user_manager_settings = dict(
    reset_password_token_secret='reset-secret',
    verification_token_secret='verification-secret'
)

# Get user manager context
get_user_manager_context = create_user_manager_context(
    get_user_db,
    user_manager_settings=user_manager_settings
)

create_user_manager_func

msdss_users_api.tools.create_user_manager_func(get_user_db, UserManager=<class 'msdss_users_api.managers.UserManager'>)[source]

Create a function to return the the user manager class.

See UserManager configuration for FastAPI Users,

Parameters
Returns

A function yielding a configured msdss_users_api.managers.UserManager.

Return type

func

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import databases

from msdss_base_database import Database
from msdss_users_api.tools import *

# Create a database object
db = Database()._connection

# Get the user db func
get_user_db = create_user_db_func(db)

# Create a user manager model
UserManager = create_user_manager('msdss-reset-secret', 'msdss-verify-secret')

# Get the user manager func
get_user_manager = create_user_manager_func(get_user_db, UserManager)

delete_user

async msdss_users_api.tools.delete_user(email, user_db_context_kwargs={}, user_manager_context_kwargs={})[source]

Delete a user.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Create user manager secrets
kwargs = dict(
    user_manager_settings=dict(
        reset_password_token_secret='reset-secret',
        verification_token_secret='verification-secret'
    )
)

# Del users
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
await register_user('test@example.com', 'msdss123', user_manager_context_kwargs=kwargs)
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
User test@example.com does not exist
User created test@example.com
User deleted test@example.com

get_user

async msdss_users_api.tools.get_user(email, show=False, include_hashed_password=False, user_db_context_kwargs={}, user_manager_context_kwargs={})[source]

Get attributes for a user.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Returns

A user model with attributes for the specified user with email.

Return type

msdss_users.models.User

Example

from msdss_users_api.tools import register_user, get_user

# Create user manager secrets
kwargs = dict(
    user_manager_settings=dict(
        reset_password_token_secret='reset-secret',
        verification_token_secret='verification-secret'
    )
)

# Try to delete user
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)

# Get user
await register_user('test@example.com', 'msdss123', user_manager_context_kwargs=kwargs)
user = await get_user('test@example.com', show=True, user_manager_context_kwargs=kwargs)
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
User test@example.com does not exist
User created test@example.com
id: a07f41b3-ca23-425f-a848-1219e439d9b3
email: test@example.com
is_active: True
is_superuser: False
is_verified: False
User deleted test@example.com

register_user

async msdss_users_api.tools.register_user(email, password, superuser=False, user_db_context_kwargs={}, user_manager_context_kwargs={}, *args, **kwargs)[source]

Register a user.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Create user manager secrets
kwargs = dict(
    user_manager_settings=dict(
        reset_password_token_secret='reset-secret',
        verification_token_secret='verification-secret'
    )
)

# Try to delete user
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)

# Register user
await register_user('test@example.com', 'msdss123', user_manager_context_kwargs=kwargs)
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
User test@example.com does not exist
User created test@example.com
User deleted test@example.com

reset_user_password

async msdss_users_api.tools.reset_user_password(email, password, user_db_context_kwargs={}, user_manager_context_kwargs={})[source]

Reset password for a user.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Create user manager secrets
kwargs = dict(
    user_manager_settings=dict(
        reset_password_token_secret='reset-secret',
        verification_token_secret='verification-secret'
    )
)

# Try to delete user
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)

# Reset user
await register_user('test@example.com', 'msdss123', user_manager_context_kwargs=kwargs)
await reset_user_password('test@example.com', 'msdss321', user_manager_context_kwargs=kwargs)
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
User test@example.com does not exist
User created test@example.com
User password reset test@example.com
User deleted test@example.com

update_user

async msdss_users_api.tools.update_user(email, user_db_context_kwargs={}, user_manager_context_kwargs={}, *args, **kwargs)[source]

Update a user.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_users_api.tools import *

# Create user manager secrets
kwargs = dict(
    user_manager_settings=dict(
        reset_password_token_secret='reset-secret',
        verification_token_secret='verification-secret'
    )
)

# Try to delete user
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)

# Create a test user
await register_user('test@example.com', 'msdss123', user_manager_context_kwargs=kwargs)
print('\nbefore_update:\n')
user = await get_user('test@example.com', show=True, user_manager_context_kwargs=kwargs)

# Update the test user
await update_user('test@example.com', is_verified=True, user_manager_context_kwargs=kwargs)
print('\nafter_update:\n')
user = await get_user('test@example.com', show=True, user_manager_context_kwargs=kwargs)
await delete_user('test@example.com', user_manager_context_kwargs=kwargs)
User test@example.com does not exist
User created test@example.com

before_update:

id: 3c7d0dac-bebe-4115-a889-ae824419e69b
email: test@example.com
is_active: True
is_superuser: False
is_verified: False
User updated test@example.com

after_update:

id: 3c7d0dac-bebe-4115-a889-ae824419e69b
email: test@example.com
is_active: True
is_superuser: False
is_verified: True
User deleted test@example.com