[Feature] Add option to disable email verification on registration
- Dominant language
- Go
- Stars
- 15.7k
- Forks
- 1.4k
- Avg merge
- 3d 8h
- Merged PRs (30d)
- 7
Description
## Feature Request: Allow admin to disable email verification requirement
### Problem
Currently, Apache Answer **always requires** email verification after registration. Users cannot access the platform until they click the verification link in their email.
This is problematic because:
- Many users don't receive or check the verification email
- It creates friction in user onboarding
- Some deployments (internal networks, dev environments) don't need email verification
### Proposed Solution
Add an admin configuration option to allow users to use the platform immediately after registration without email verification.
### Technical Changes Required
#### 1. Schema Changes
**File:** `internal/schema/siteinfo_schema.go`
```go
type SiteLoginReq struct {
AllowNewRegistrations bool `json:"allow_new_registrations"`
AllowEmailRegistrations bool `json:"allow_email_registrations"`
AllowPasswordLogin bool `json:"allow_password_login"`
AllowEmailDomains []string `json:"allow_email_domains"`
RequireEmailVerification bool `json:"require_email_verification"` // NEW
}
```
#### 2. Registration Logic
**File:** `internal/service/content/user_service.go`
Current behavior (line ~471):
```go
userInfo.MailStatus = entity.EmailStatusToBeVerified // Always unverified
```
New behavior:
```go
if requireEmailVerification {
userInfo.MailStatus = entity.EmailStatusToBeVerified
} else {
userInfo.MailStatus = entity.EmailStatusAvailable // Verified immediately
}
```
#### 3. Admin API
**File:** `internal/controller_admin/siteinfo_controller.go`
- Update `SiteLoginReq` struct to include new field
- Ensure admin can toggle this setting
#### 4. Frontend Admin Panel
**File:** `ui/src/admin/pages/site/` (or similar)
- Add toggle switch for "Require Email Verification" in login settings
### Default Behavior
- `RequireEmailVerification = true` (maintain backward compatibility)
- Admin can set to `false` to allow immediate access after registration
### Database Changes
None required - existing `mail_status` field already supports both states:
- `1` = EmailStatusAvailable (verified)
- `2` = EmailStatusToBeVerified (pending)
### Testing Checklist
- [ ] New user registration with verification enabled → mail_status = 2
- [ ] New user registration with verification disabled → mail_status = 1
- [ ] Admin can toggle the setting via admin panel
- [ ] API returns correct value for `require_email_verification`
- [ ] Existing users with mail_status = 2 still need to verify (if required)
### Related Files
- `internal/schema/siteinfo_schema.go`
- `internal/service/content/user_service.go`
- `internal/controller_admin/siteinfo_controller.go`
- `internal/service/siteinfo_common/siteinfo_service.go`
- `ui/src/` (admin panel components)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with internal/schema/siteinfo_schema.go and trace the registration flow in internal/service/content/user_service.go, then inspect internal/controller_admin/siteinfo_controller.go and the admin components under ui/src/admin/pages/site/. Run the existing registration and site-info tests if available. Done means the setting is exposed and persisted, defaults to requiring verification, changes registration status correctly, and is controllable from the admin panel.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, typescript
- Domain
- authentication, backend, frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100