Skip to content

Commit 69af9eb

Browse files
committed
feat: add authoriazation endpoint
1 parent d49ad62 commit 69af9eb

47 files changed

Lines changed: 1352 additions & 403 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
"""initial commit
2+
3+
Revision ID: 3be03348cbd4
4+
Revises:
5+
Create Date: 2026-06-17 11:43:46.925487
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision: str = '3be03348cbd4'
16+
down_revision: Union[str, Sequence[str], None] = None
17+
branch_labels: Union[str, Sequence[str], None] = None
18+
depends_on: Union[str, Sequence[str], None] = None
19+
20+
21+
def upgrade() -> None:
22+
"""Upgrade schema."""
23+
# ### commands auto generated by Alembic - please adjust! ###
24+
op.create_table('casbin_rules',
25+
sa.Column('id', sa.Uuid(), nullable=False),
26+
sa.Column('ptype', sa.String(length=16), nullable=False),
27+
sa.Column('v0', sa.String(length=255), nullable=True),
28+
sa.Column('v1', sa.String(length=255), nullable=True),
29+
sa.Column('v2', sa.String(length=255), nullable=True),
30+
sa.Column('v3', sa.String(length=255), nullable=True),
31+
sa.Column('v4', sa.String(length=255), nullable=True),
32+
sa.Column('v5', sa.String(length=255), nullable=True),
33+
sa.PrimaryKeyConstraint('id')
34+
)
35+
op.create_index(op.f('ix_casbin_rules_ptype'), 'casbin_rules', ['ptype'], unique=False)
36+
op.create_index(op.f('ix_casbin_rules_v0'), 'casbin_rules', ['v0'], unique=False)
37+
op.create_index(op.f('ix_casbin_rules_v1'), 'casbin_rules', ['v1'], unique=False)
38+
op.create_index(op.f('ix_casbin_rules_v2'), 'casbin_rules', ['v2'], unique=False)
39+
op.create_table('permissions',
40+
sa.Column('id', sa.Uuid(), nullable=False),
41+
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
42+
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
43+
sa.Column('deleted_at', sa.DateTime(), nullable=True),
44+
sa.Column('key', sa.String(length=255), nullable=False),
45+
sa.Column('resource', sa.String(length=100), nullable=False),
46+
sa.Column('action', sa.String(length=100), nullable=False),
47+
sa.PrimaryKeyConstraint('id'),
48+
sa.UniqueConstraint('resource', 'action', name='uq_permissions_resource_action')
49+
)
50+
op.create_index(op.f('ix_permissions_action'), 'permissions', ['action'], unique=False)
51+
op.create_index(op.f('ix_permissions_key'), 'permissions', ['key'], unique=True)
52+
op.create_index(op.f('ix_permissions_resource'), 'permissions', ['resource'], unique=False)
53+
op.create_table('roles',
54+
sa.Column('id', sa.Uuid(), nullable=False),
55+
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
56+
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
57+
sa.Column('deleted_at', sa.DateTime(), nullable=True),
58+
sa.Column('name', sa.String(length=100), nullable=False),
59+
sa.PrimaryKeyConstraint('id')
60+
)
61+
op.create_index(op.f('ix_roles_name'), 'roles', ['name'], unique=True)
62+
op.create_table('users',
63+
sa.Column('id', sa.Uuid(), nullable=False),
64+
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
65+
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
66+
sa.Column('deleted_at', sa.DateTime(), nullable=True),
67+
sa.Column('username', sa.String(length=255), nullable=True),
68+
sa.Column('fullname', sa.String(length=255), nullable=True),
69+
sa.Column('birthday', sa.Date(), nullable=True),
70+
sa.Column('email', sa.String(length=255), nullable=False),
71+
sa.Column('password', sa.String(length=255), nullable=False),
72+
sa.PrimaryKeyConstraint('id')
73+
)
74+
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
75+
op.create_table('refresh_tokens',
76+
sa.Column('id', sa.Uuid(), nullable=False),
77+
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
78+
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
79+
sa.Column('deleted_at', sa.DateTime(), nullable=True),
80+
sa.Column('user_id', sa.Uuid(), nullable=False),
81+
sa.Column('token_hash', sa.String(length=255), nullable=False),
82+
sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False),
83+
sa.Column('is_revoked', sa.Boolean(), nullable=False),
84+
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
85+
sa.PrimaryKeyConstraint('id')
86+
)
87+
op.create_index(op.f('ix_refresh_tokens_token_hash'), 'refresh_tokens', ['token_hash'], unique=True)
88+
op.create_index(op.f('ix_refresh_tokens_user_id'), 'refresh_tokens', ['user_id'], unique=False)
89+
op.create_table('role_permissions',
90+
sa.Column('id', sa.Uuid(), nullable=False),
91+
sa.Column('role_id', sa.Uuid(), nullable=False),
92+
sa.Column('permission_id', sa.Uuid(), nullable=False),
93+
sa.ForeignKeyConstraint(['permission_id'], ['permissions.id'], ),
94+
sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ),
95+
sa.PrimaryKeyConstraint('id'),
96+
sa.UniqueConstraint('role_id', 'permission_id', name='uq_role_permissions_role_id_permission_id')
97+
)
98+
op.create_index(op.f('ix_role_permissions_permission_id'), 'role_permissions', ['permission_id'], unique=False)
99+
op.create_index(op.f('ix_role_permissions_role_id'), 'role_permissions', ['role_id'], unique=False)
100+
op.create_table('todos',
101+
sa.Column('id', sa.Uuid(), nullable=False),
102+
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
103+
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
104+
sa.Column('deleted_at', sa.DateTime(), nullable=True),
105+
sa.Column('title', sa.String(length=255), nullable=False),
106+
sa.Column('description', sa.String(length=500), nullable=True),
107+
sa.Column('is_completed', sa.Boolean(), nullable=False),
108+
sa.Column('user_id', sa.Uuid(), nullable=False),
109+
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
110+
sa.PrimaryKeyConstraint('id')
111+
)
112+
op.create_table('user_has_roles',
113+
sa.Column('id', sa.Uuid(), nullable=False),
114+
sa.Column('user_id', sa.Uuid(), nullable=False),
115+
sa.Column('role_id', sa.Uuid(), nullable=False),
116+
sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ),
117+
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
118+
sa.PrimaryKeyConstraint('id'),
119+
sa.UniqueConstraint('user_id', 'role_id', name='uq_user_has_roles_user_id_role_id')
120+
)
121+
op.create_index(op.f('ix_user_has_roles_role_id'), 'user_has_roles', ['role_id'], unique=False)
122+
op.create_index(op.f('ix_user_has_roles_user_id'), 'user_has_roles', ['user_id'], unique=False)
123+
# ### end Alembic commands ###
124+
125+
126+
def downgrade() -> None:
127+
"""Downgrade schema."""
128+
# ### commands auto generated by Alembic - please adjust! ###
129+
op.drop_index(op.f('ix_user_has_roles_user_id'), table_name='user_has_roles')
130+
op.drop_index(op.f('ix_user_has_roles_role_id'), table_name='user_has_roles')
131+
op.drop_table('user_has_roles')
132+
op.drop_table('todos')
133+
op.drop_index(op.f('ix_role_permissions_role_id'), table_name='role_permissions')
134+
op.drop_index(op.f('ix_role_permissions_permission_id'), table_name='role_permissions')
135+
op.drop_table('role_permissions')
136+
op.drop_index(op.f('ix_refresh_tokens_user_id'), table_name='refresh_tokens')
137+
op.drop_index(op.f('ix_refresh_tokens_token_hash'), table_name='refresh_tokens')
138+
op.drop_table('refresh_tokens')
139+
op.drop_index(op.f('ix_users_email'), table_name='users')
140+
op.drop_table('users')
141+
op.drop_index(op.f('ix_roles_name'), table_name='roles')
142+
op.drop_table('roles')
143+
op.drop_index(op.f('ix_permissions_resource'), table_name='permissions')
144+
op.drop_index(op.f('ix_permissions_key'), table_name='permissions')
145+
op.drop_index(op.f('ix_permissions_action'), table_name='permissions')
146+
op.drop_table('permissions')
147+
op.drop_index(op.f('ix_casbin_rules_v2'), table_name='casbin_rules')
148+
op.drop_index(op.f('ix_casbin_rules_v1'), table_name='casbin_rules')
149+
op.drop_index(op.f('ix_casbin_rules_v0'), table_name='casbin_rules')
150+
op.drop_index(op.f('ix_casbin_rules_ptype'), table_name='casbin_rules')
151+
op.drop_table('casbin_rules')
152+
# ### end Alembic commands ###

alembic/versions/579bfc3a008b_initial_schema.py

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""add description col to permission and role
2+
3+
Revision ID: aa90557ef712
4+
Revises: 3be03348cbd4
5+
Create Date: 2026-06-17 11:46:37.274806
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision: str = 'aa90557ef712'
16+
down_revision: Union[str, Sequence[str], None] = '3be03348cbd4'
17+
branch_labels: Union[str, Sequence[str], None] = None
18+
depends_on: Union[str, Sequence[str], None] = None
19+
20+
21+
def upgrade() -> None:
22+
"""Upgrade schema."""
23+
# ### commands auto generated by Alembic - please adjust! ###
24+
op.add_column('permissions', sa.Column('descpription', sa.String(length=255), nullable=True))
25+
op.add_column('roles', sa.Column('descpription', sa.String(length=255), nullable=True))
26+
# ### end Alembic commands ###
27+
28+
29+
def downgrade() -> None:
30+
"""Downgrade schema."""
31+
# ### commands auto generated by Alembic - please adjust! ###
32+
op.drop_column('roles', 'descpription')
33+
op.drop_column('permissions', 'descpription')
34+
# ### end Alembic commands ###

alembic/versions/ab661f0b6986_add_refresh_tokens_table.py

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)