feat: add self-service profile page with manage navigation
Add /manage/profile page where authenticated users can view and edit their OIDC profile fields (given_name, family_name, preferred_username, email, phone_number, picture, locale). - Create manage/base.html with tab-style nav for Profile/Credentials - Update credentials.html to extend manage/base.html - Add GET/POST routes with server-side validation - Add input styling for tel and url input types - Add profile test user with pre-filled data in setup_db.py - Add 19 E2E tests covering structure, navigation, updates, validation - All 76 E2E tests and 172 Python tests pass
This commit is contained in:
parent
404fcac4dd
commit
8a610a0cd6
7 changed files with 395 additions and 5 deletions
|
|
@ -79,6 +79,27 @@ async def seed() -> None:
|
|||
await magic_link_service.mark_used(expired_link.token)
|
||||
result["used_token"] = expired_link.token
|
||||
|
||||
# 5. Create a user with profile data for profile management tests
|
||||
profile_user = User(
|
||||
userid="test-user-04",
|
||||
username="profileuser",
|
||||
given_name="Alice",
|
||||
family_name="Smith",
|
||||
preferred_username="asmith",
|
||||
email="alice@example.com",
|
||||
phone_number="+1234567890",
|
||||
picture="https://example.com/alice.jpg",
|
||||
locale="en",
|
||||
groups=["users"],
|
||||
)
|
||||
await user_repo.create(profile_user)
|
||||
profile_password_hash = password_service.hash("profilepass123")
|
||||
await cred_repo.create_password(
|
||||
PasswordCredential(user_id=profile_user.userid, password_hash=profile_password_hash)
|
||||
)
|
||||
result["profile_username"] = "profileuser"
|
||||
result["profile_password"] = "profilepass123"
|
||||
|
||||
await db.commit()
|
||||
await db.close()
|
||||
print(json.dumps(result))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue