mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-05-15 14:27:31 -04:00
Add private columns for sensitive data
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Optional
|
|||||||
from sqlalchemy import ForeignKey, Integer, String, orm
|
from sqlalchemy import ForeignKey, Integer, String, orm
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
from .._model_base import BaseMixins, SqlAlchemyBase
|
from .._model_base import BaseMixins, PrivateColumn, SqlAlchemyBase
|
||||||
from .._model_utils import guid
|
from .._model_utils import guid
|
||||||
from .._model_utils.auto_init import auto_init
|
from .._model_utils.auto_init import auto_init
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
class GroupInviteToken(SqlAlchemyBase, BaseMixins):
|
class GroupInviteToken(SqlAlchemyBase, BaseMixins):
|
||||||
__tablename__ = "invite_tokens"
|
__tablename__ = "invite_tokens"
|
||||||
token: Mapped[str] = mapped_column(String, index=True, nullable=False, unique=True)
|
token: PrivateColumn[str] = mapped_column(String, index=True, nullable=False, unique=True)
|
||||||
uses_left: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
|
uses_left: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
|
||||||
|
|
||||||
group_id: Mapped[guid.GUID | None] = mapped_column(guid.GUID, ForeignKey("groups.id"), index=True)
|
group_id: Mapped[guid.GUID | None] = mapped_column(guid.GUID, ForeignKey("groups.id"), index=True)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING
|
|||||||
from sqlalchemy import ForeignKey, String, orm
|
from sqlalchemy import ForeignKey, String, orm
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
from .._model_base import BaseMixins, SqlAlchemyBase
|
from .._model_base import BaseMixins, PrivateColumn, SqlAlchemyBase
|
||||||
from .._model_utils.guid import GUID
|
from .._model_utils.guid import GUID
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
@@ -15,7 +15,7 @@ class PasswordResetModel(SqlAlchemyBase, BaseMixins):
|
|||||||
|
|
||||||
user_id: Mapped[GUID] = mapped_column(GUID, ForeignKey("users.id"), nullable=False, index=True)
|
user_id: Mapped[GUID] = mapped_column(GUID, ForeignKey("users.id"), nullable=False, index=True)
|
||||||
user: Mapped["User"] = orm.relationship("User", back_populates="password_reset_tokens", uselist=False)
|
user: Mapped["User"] = orm.relationship("User", back_populates="password_reset_tokens", uselist=False)
|
||||||
token: Mapped[str] = mapped_column(String(64), unique=True, nullable=False)
|
token: PrivateColumn[str] = mapped_column(String(64), unique=True, nullable=False)
|
||||||
|
|
||||||
def __init__(self, user_id, token, **_):
|
def __init__(self, user_id, token, **_):
|
||||||
self.user_id = user_id
|
self.user_id = user_id
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from mealie.db.models._model_utils.auto_init import auto_init
|
|||||||
from mealie.db.models._model_utils.datetime import NaiveDateTime
|
from mealie.db.models._model_utils.datetime import NaiveDateTime
|
||||||
from mealie.db.models._model_utils.guid import GUID
|
from mealie.db.models._model_utils.guid import GUID
|
||||||
|
|
||||||
from .._model_base import BaseMixins, SqlAlchemyBase
|
from .._model_base import BaseMixins, PrivateColumn, SqlAlchemyBase
|
||||||
from .user_to_recipe import UserToRecipe
|
from .user_to_recipe import UserToRecipe
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
@@ -28,7 +28,7 @@ if TYPE_CHECKING:
|
|||||||
class LongLiveToken(SqlAlchemyBase, BaseMixins):
|
class LongLiveToken(SqlAlchemyBase, BaseMixins):
|
||||||
__tablename__ = "long_live_tokens"
|
__tablename__ = "long_live_tokens"
|
||||||
name: Mapped[str] = mapped_column(String, nullable=False)
|
name: Mapped[str] = mapped_column(String, nullable=False)
|
||||||
token: Mapped[str] = mapped_column(String, nullable=False, index=True)
|
token: PrivateColumn[str] = mapped_column(String, nullable=False, index=True)
|
||||||
|
|
||||||
user_id: Mapped[GUID | None] = mapped_column(GUID, ForeignKey("users.id"), index=True)
|
user_id: Mapped[GUID | None] = mapped_column(GUID, ForeignKey("users.id"), index=True)
|
||||||
user: Mapped[Optional["User"]] = orm.relationship("User")
|
user: Mapped[Optional["User"]] = orm.relationship("User")
|
||||||
@@ -54,7 +54,7 @@ class User(SqlAlchemyBase, BaseMixins):
|
|||||||
full_name: Mapped[str | None] = mapped_column(String, index=True)
|
full_name: Mapped[str | None] = mapped_column(String, index=True)
|
||||||
username: Mapped[str | None] = mapped_column(String, index=True, unique=True)
|
username: Mapped[str | None] = mapped_column(String, index=True, unique=True)
|
||||||
email: Mapped[str | None] = mapped_column(String, unique=True, index=True)
|
email: Mapped[str | None] = mapped_column(String, unique=True, index=True)
|
||||||
password: Mapped[str | None] = mapped_column(String)
|
password: PrivateColumn[str | None] = mapped_column(String)
|
||||||
auth_method: Mapped[Enum[AuthMethod]] = mapped_column(Enum(AuthMethod), default=AuthMethod.MEALIE)
|
auth_method: Mapped[Enum[AuthMethod]] = mapped_column(Enum(AuthMethod), default=AuthMethod.MEALIE)
|
||||||
admin: Mapped[bool | None] = mapped_column(Boolean, default=False)
|
admin: Mapped[bool | None] = mapped_column(Boolean, default=False)
|
||||||
advanced: Mapped[bool | None] = mapped_column(Boolean, default=False)
|
advanced: Mapped[bool | None] = mapped_column(Boolean, default=False)
|
||||||
@@ -84,10 +84,10 @@ class User(SqlAlchemyBase, BaseMixins):
|
|||||||
"single_parent": True,
|
"single_parent": True,
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens: Mapped[list[LongLiveToken]] = orm.relationship(LongLiveToken, **sp_args)
|
tokens: PrivateColumn[list[LongLiveToken]] = orm.relationship(LongLiveToken, **sp_args)
|
||||||
comments: Mapped[list["RecipeComment"]] = orm.relationship("RecipeComment", **sp_args)
|
comments: Mapped[list["RecipeComment"]] = orm.relationship("RecipeComment", **sp_args)
|
||||||
recipe_timeline_events: Mapped[list["RecipeTimelineEvent"]] = orm.relationship("RecipeTimelineEvent", **sp_args)
|
recipe_timeline_events: Mapped[list["RecipeTimelineEvent"]] = orm.relationship("RecipeTimelineEvent", **sp_args)
|
||||||
password_reset_tokens: Mapped[list["PasswordResetModel"]] = orm.relationship("PasswordResetModel", **sp_args)
|
password_reset_tokens: PrivateColumn[list["PasswordResetModel"]] = orm.relationship("PasswordResetModel", **sp_args)
|
||||||
|
|
||||||
owned_recipes_id: Mapped[GUID | None] = mapped_column(GUID, ForeignKey("recipes.id"))
|
owned_recipes_id: Mapped[GUID | None] = mapped_column(GUID, ForeignKey("recipes.id"))
|
||||||
owned_recipes: Mapped[Optional["RecipeModel"]] = orm.relationship(
|
owned_recipes: Mapped[Optional["RecipeModel"]] = orm.relationship(
|
||||||
|
|||||||
Reference in New Issue
Block a user