blob: a589fd43c6eb8aa4a2f48323d2078e2c951ef547 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package services
import (
"shrine/enums"
"shrine/messages"
"shrine/models"
"shrine/repositories"
"shrine/types/hypertext"
"shrine/utils/crypto"
"shrine/utils/emails"
"shrine/utils/logger"
"time"
)
func SendVerification(citizen *models.User, verificationType enums.VerificationType) *hypertext.ServiceError {
token, err := crypto.GenerateToken()
if err != nil {
return fail(enums.Internal, messages.FailedGenerateToken)
}
citizen.SetVerification(crypto.HashToken(token), time.Now().Add(24*time.Hour), verificationType)
if err := repositories.UpdateUser(citizen); err != nil {
return fail(enums.Internal, messages.FailedStoreToken)
}
switch verificationType {
case enums.Activation:
if err := emails.SendActivation(citizen.Email, citizen.Username, token); err != nil {
logger.Errorf("Auth", "Failed to send activation email to %s: %v", citizen.Email, err)
}
}
return nil
}
|