feat: First Time Setup Wizard (#3204)

* extract user registration form into a composable

* added base wizard component

* added partial setup implementation

* removed unused attrs

* added setup bypass

* made setup page more readable

* add checkbox hints to autoform

* added common settings pages and initial submit logic

* bypass setup in demo

* add full name to user registration

* added fullname and pw handling to setup

* fixed wizard indentation

* added post-setup suggestions

* added tests for backend changes

* renamed Wizard to BaseWizard

* lint fixes

* pass hardcoded default password instead of backend nonsense

* removed old test

* fix e2e

* added setup skip to e2e testing for all admin users

---------

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
Michael Genson
2024-03-11 08:28:54 -05:00
committed by GitHub
parent 430e1d7d4e
commit 403038a5b2
25 changed files with 1103 additions and 141 deletions

View File

@@ -46,6 +46,8 @@ class AppStartupInfo(MealieModel):
it is removed, this will always return False.
"""
is_demo: bool
class AdminAboutInfo(AppInfo):
versionLatest: str

View File

@@ -10,8 +10,9 @@ from mealie.schema._mealie.validators import validate_locale
class CreateUserRegistration(MealieModel):
group: str | None = None
group_token: Annotated[str | None, Field(validate_default=True)] = None
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)]
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)]
full_name: Annotated[str, StringConstraints(strip_whitespace=True)]
password: str
password_confirm: str
advanced: bool = False

View File

@@ -49,7 +49,7 @@ class DeleteTokenResponse(MealieModel):
class ChangePassword(MealieModel):
current_password: str
current_password: str = ""
new_password: str = Field(..., min_length=8)