Advanced Authentication

This commit is contained in:
Mawoka
2022-12-18 18:31:06 +01:00
parent bb848adca8
commit 2e159af134
29 changed files with 3315 additions and 1620 deletions
@@ -0,0 +1,40 @@
"""Added webauthn
Revision ID: 25f2c34a69c8
Revises: 97144a8cf6b6
Create Date: 2022-12-17 16:53:28.909124
"""
from alembic import op
import sqlalchemy as sa
import ormar
# revision identifiers, used by Alembic.
revision = "25f2c34a69c8"
down_revision = "97144a8cf6b6"
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"fido_credentials",
sa.Column("pk", sa.Integer(), nullable=False),
sa.Column("id", sa.LargeBinary(length=256), nullable=False),
sa.Column("public_key", sa.LargeBinary(length=256), nullable=False),
sa.Column("sign_count", sa.Integer(), nullable=False),
sa.Column("user", ormar.fields.sqlalchemy_uuid.CHAR(32), nullable=True),
sa.ForeignKeyConstraint(["user"], ["users.id"], name="fk_fido_credentials_users_id_user"),
sa.PrimaryKeyConstraint("pk"),
)
op.add_column("users", sa.Column("require_password", sa.Boolean(), nullable=False))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("users", "require_password")
op.drop_table("fido_credentials")
# ### end Alembic commands ###
@@ -0,0 +1,29 @@
"""Added totp
Revision ID: 694cb11c6886
Revises: 901dfcdf8d38
Create Date: 2022-12-18 13:20:48.091675
"""
from alembic import op
import sqlalchemy as sa
import ormar
# revision identifiers, used by Alembic.
revision = "694cb11c6886"
down_revision = "901dfcdf8d38"
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("users", sa.Column("totp_secret", sa.String(length=32), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("users", "totp_secret")
# ### end Alembic commands ###
@@ -0,0 +1,45 @@
"""Added Backup-code
Revision ID: 901dfcdf8d38
Revises: 25f2c34a69c8
Create Date: 2022-12-18 11:48:22.772981
"""
import os
from alembic import op
import sqlalchemy as sa
from sqlalchemy.orm import Session
import ormar
# revision identifiers, used by Alembic.
revision = "901dfcdf8d38"
down_revision = "25f2c34a69c8"
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("users", sa.Column("backup_code", sa.String(length=64), nullable=True))
conn = op.get_bind()
session = Session(bind=conn)
res = session.execute("SELECT id from users;")
for row in res:
user_id = str(row).strip(",.'()")
session.execute(
sa.sql.text("UPDATE users SET backup_code = :backup_code WHERE users.id=:user_id"),
{"user_id": user_id, "backup_code": os.urandom(32).hex()},
)
op.alter_column("users", "backup_code", nullable=False)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("users", "backup_code")
# ### end Alembic commands ###
@@ -0,0 +1,29 @@
"""Added github_user_id
Revision ID: 97144a8cf6b6
Revises: b2acaede5c2f
Create Date: 2022-12-17 16:25:44.446361
"""
from alembic import op
import sqlalchemy as sa
import ormar
# revision identifiers, used by Alembic.
revision = "97144a8cf6b6"
down_revision = "b2acaede5c2f"
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("users", sa.Column("github_user_id", sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("users", "github_user_id")
# ### end Alembic commands ###