feat: revamp authentication -- remove twitch's tokens from our own wrapper token

This commit is contained in:
cătălin 2025-01-17 18:15:58 +01:00
commit 50900986fa
No known key found for this signature in database
31 changed files with 736 additions and 155 deletions

View file

@ -0,0 +1,35 @@
"""
This module contains a Caribou migration.
Migration Name: sentences
Migration Version: 20241219191711
"""
def upgrade(connection):
# update table `sentences` to have a user_id row
# which references users.id
# and a channel VARCHAR(255) row
sql = """
DROP TABLE IF EXISTS sentences;
"""
connection.execute(sql)
connection.commit()
sql = """
CREATE TABLE sentences(
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
sentence VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
user_id VARCHAR(255) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
"""
connection.execute(sql)
connection.commit()
def downgrade(connection):
# add your downgrade step here
pass

View file

@ -0,0 +1,53 @@
"""
This module contains a Caribou migration.
Migration Name: user_external_auth
Migration Version: 20250112153541
"""
def upgrade(connection):
"""
- delete access_token, refresh_token, and expires_at from users
- add external_auth table which will store the external auths:
- type: twitch or discord
- credentials: JSON
"""
sql = """
ALTER TABLE users DROP COLUMN access_token;
"""
connection.execute(sql)
sql = """
ALTER TABLE users DROP COLUMN refresh_token;
"""
connection.execute(sql)
sql = """
ALTER TABLE users DROP COLUMN expires_at;
"""
connection.execute(sql)
sql = """
CREATE TABLE external_auth(
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
type VARCHAR(255) NOT NULL,
credentials JSON NOT NULL
);
"""
connection.execute(sql)
sql = """
CREATE TABLE user_external_auth(
user_id VARCHAR(255) NOT NULL,
external_auth_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (external_auth_id) REFERENCES external_auth(id)
);
"""
connection.execute(sql)
connection.commit()
def downgrade(connection):
# add your downgrade step here
pass

View file

@ -0,0 +1,35 @@
"""
This module contains a Caribou migration.
Migration Name: external_auth_json
Migration Version: 20250113142241
"""
def upgrade(connection):
"""remove tables:
- external_auth
- user_external_auth
add column to users table:
- external_auth JSON
"""
sql = """
DROP TABLE IF EXISTS external_auth;
"""
connection.execute(sql)
sql = """
DROP TABLE IF EXISTS user_external_auth;
"""
connection.execute(sql)
sql = """
ALTER TABLE users ADD COLUMN external_auth JSON;
"""
connection.execute(sql)
connection.commit()
def downgrade(connection):
# add your downgrade step here
pass