97be4afbff
- Add OAuth provider config vars and helpers to config.py - Add google_id, yandex_id, discord_id, vk_id columns to User model - Create OAuth provider service with state management and 4 providers - Add CRUD functions for OAuth user lookup, linking, and creation - Add 3 API endpoints: providers list, authorize URL, callback - Add alembic migration and universal_migration support - Fix trial disable logic to cover OAuth auth_types
46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = 'g5b6c7d8e9f0'
|
|
down_revision: Union[str, None] = 'f4a5b6c7d8e9'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column('users', sa.Column('google_id', sa.String(255), nullable=True))
|
|
op.add_column('users', sa.Column('yandex_id', sa.String(255), nullable=True))
|
|
op.add_column('users', sa.Column('discord_id', sa.String(255), nullable=True))
|
|
op.add_column('users', sa.Column('vk_id', sa.BigInteger(), nullable=True))
|
|
|
|
op.create_unique_constraint('uq_users_google_id', 'users', ['google_id'])
|
|
op.create_unique_constraint('uq_users_yandex_id', 'users', ['yandex_id'])
|
|
op.create_unique_constraint('uq_users_discord_id', 'users', ['discord_id'])
|
|
op.create_unique_constraint('uq_users_vk_id', 'users', ['vk_id'])
|
|
|
|
op.create_index('ix_users_google_id', 'users', ['google_id'])
|
|
op.create_index('ix_users_yandex_id', 'users', ['yandex_id'])
|
|
op.create_index('ix_users_discord_id', 'users', ['discord_id'])
|
|
op.create_index('ix_users_vk_id', 'users', ['vk_id'])
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index('ix_users_vk_id', table_name='users')
|
|
op.drop_index('ix_users_discord_id', table_name='users')
|
|
op.drop_index('ix_users_yandex_id', table_name='users')
|
|
op.drop_index('ix_users_google_id', table_name='users')
|
|
|
|
op.drop_constraint('uq_users_vk_id', 'users', type_='unique')
|
|
op.drop_constraint('uq_users_discord_id', 'users', type_='unique')
|
|
op.drop_constraint('uq_users_yandex_id', 'users', type_='unique')
|
|
op.drop_constraint('uq_users_google_id', 'users', type_='unique')
|
|
|
|
op.drop_column('users', 'vk_id')
|
|
op.drop_column('users', 'discord_id')
|
|
op.drop_column('users', 'yandex_id')
|
|
op.drop_column('users', 'google_id')
|