Skip to content

Commit

Permalink
add support for longer scrypt password hashes
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Nov 11, 2023
1 parent 8b0b56f commit ed1cd1c
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
5 changes: 3 additions & 2 deletions api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class User(Updateable, Model):
sa.String(64), index=True, unique=True)
email: so.Mapped[str] = so.mapped_column(
sa.String(120), index=True, unique=True)
password_hash: so.Mapped[Optional[str]] = so.mapped_column(sa.String(128))
password_hash: so.Mapped[Optional[str]] = so.mapped_column(sa.String(256))
about_me: so.Mapped[Optional[str]] = so.mapped_column(sa.String(140))
first_seen: so.Mapped[datetime] = so.mapped_column(default=datetime.utcnow)
last_seen: so.Mapped[datetime] = so.mapped_column(default=datetime.utcnow)
Expand Down Expand Up @@ -141,7 +141,8 @@ def password(self, password):
self.password_hash = generate_password_hash(password)

def verify_password(self, password):
return check_password_hash(self.password_hash, password)
if self.password_hash: # pragma: no branch
return check_password_hash(self.password_hash, password)

def ping(self):
self.last_seen = datetime.utcnow()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"""make password hash longer to work with scrypt
Revision ID: 5adf634a5e8b
Revises: c83a60d7583b
Create Date: 2023-11-11 16:03:57.838344
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '5adf634a5e8b'
down_revision = 'c83a60d7583b'
branch_labels = None
depends_on = None


def upgrade(engine_name: str) -> None:
globals()["upgrade_%s" % engine_name]()


def downgrade(engine_name: str) -> None:
globals()["downgrade_%s" % engine_name]()





def upgrade_() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('users', schema=None) as batch_op:
batch_op.alter_column('password_hash',
existing_type=sa.VARCHAR(length=128),
type_=sa.String(length=256),
existing_nullable=True)

# ### end Alembic commands ###


def downgrade_() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('users', schema=None) as batch_op:
batch_op.alter_column('password_hash',
existing_type=sa.String(length=256),
type_=sa.VARCHAR(length=128),
existing_nullable=True)

# ### end Alembic commands ###

0 comments on commit ed1cd1c

Please sign in to comment.