Replace freetext email inputs with a user lookup for tag/assign/reallocate

Typo'd addresses in the old <input type="email"> fields silently matched
nobody (assigned_to/task_tags.user_email have no FK), so a task could vanish
into an unreachable owner with no error. New UsersContext + UserPicker pull
the real user list from central auth (/api/auth/users?app=tasks), same
pattern maintenance already uses for its assignee dropdown.
This commit is contained in:
jtricerolph 2026-10-12 13:59:54 +00:00
parent 3145c1fc07
commit 6172617df3
7 changed files with 103 additions and 46 deletions

View file

@ -141,6 +141,13 @@ export interface User {
caps: string[] // bare slugs — verify?app=tasks strips the prefix
}
// Users with access to this app, served by the central auth service.
export interface AuthUser {
id: number
email: string
name: string
}
export function can(user: User, cap: string): boolean {
return user.is_admin || user.caps.includes(cap)
}