package admin import ( "context" "errors" "time" "tug/internal/storage" ) type ResetLink struct { URL string Username string ExpiresAt time.Time } func (s *Service) IssueResetLink(ctx context.Context, actor, id string) (ResetLink, error) { issued, err := s.invites.IssueReset(ctx, actor, id) switch { case errors.Is(err, storage.ErrResetLinkPending): return ResetLink{}, ProblemResetLinkPending case errors.Is(err, storage.ErrResetLinkDisabled): return ResetLink{}, ProblemResetLinkDisabled case err != nil: return ResetLink{}, target("issue reset link", err) } return ResetLink{URL: issued.URL, Username: issued.Username, ExpiresAt: issued.ExpiresAt}, nil }