Skip to content

Commit 5baaa6a

Browse files
authored
update: include role enum for default auth model (#41)
1 parent c862f71 commit 5baaa6a

3 files changed

Lines changed: 36 additions & 1 deletion

File tree

fastapi_forge/frontend/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,4 @@
8282
type=FieldDataTypeEnum.STRING,
8383
),
8484
]
85+
DEFAULT_AUTH_USER_ROLE_ENUM_NAME = "UserRole"

fastapi_forge/frontend/panels/project_config_panel.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
from pydantic import ValidationError
66

77
from fastapi_forge.dtos import (
8+
CustomEnum,
9+
CustomEnumValue,
810
Model,
911
ModelField,
1012
ModelFieldMetadata,
1113
ModelMetadata,
1214
)
1315
from fastapi_forge.enums import FieldDataTypeEnum
1416
from fastapi_forge.forge import build_project
15-
from fastapi_forge.frontend.constants import DEFAULT_AUTH_USER_FIELDS
17+
from fastapi_forge.frontend.constants import (
18+
DEFAULT_AUTH_USER_FIELDS,
19+
DEFAULT_AUTH_USER_ROLE_ENUM_NAME,
20+
)
1621
from fastapi_forge.frontend.notifications import notify_validation_error
1722
from fastapi_forge.frontend.state import state
1823

@@ -210,6 +215,23 @@ async def _handle_builtin_auth_change(
210215
return
211216

212217
try:
218+
auth_role_enum_name = DEFAULT_AUTH_USER_ROLE_ENUM_NAME
219+
auth_enum = state.get_enum_by_name(auth_role_enum_name)
220+
221+
auth_enum_values = [
222+
CustomEnumValue(name="USER", value="auto()"),
223+
CustomEnumValue(name="ADMIN", value="auto()"),
224+
]
225+
if auth_enum and not auth_enum.values:
226+
auth_enum.values = auth_enum_values
227+
228+
if not auth_enum:
229+
auth_enum = CustomEnum(
230+
name=auth_role_enum_name,
231+
values=auth_enum_values,
232+
)
233+
state.custom_enums.append(auth_enum)
234+
213235
auth_user_model = Model(
214236
name="auth_user",
215237
metadata=ModelMetadata(is_auth_model=True),
@@ -222,6 +244,12 @@ async def _handle_builtin_auth_change(
222244
index=True,
223245
),
224246
*DEFAULT_AUTH_USER_FIELDS,
247+
ModelField(
248+
name="role",
249+
type=FieldDataTypeEnum.ENUM,
250+
type_enum=auth_role_enum_name,
251+
default_value=auth_enum.values[0].name,
252+
),
225253
ModelField(
226254
name="created_at",
227255
type=FieldDataTypeEnum.DATETIME,

fastapi_forge/frontend/state.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,5 +264,11 @@ def get_auth_model(self) -> Model | None:
264264
None,
265265
)
266266

267+
def get_enum_by_name(self, name: str) -> CustomEnum | None:
268+
return next(
269+
(enum for enum in self.custom_enums if enum.name == name),
270+
None,
271+
)
272+
267273

268274
state: ProjectState = ProjectState()

0 commit comments

Comments
 (0)