mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-10-31 23:40:11 +00:00
Matrix: Store user on sign-up
This commit is contained in:
parent
e97b90d4d7
commit
4e826f4167
39
api.go
39
api.go
@ -354,6 +354,34 @@ func (app *appContext) newUser(req newUserDTO, confirmed bool) (f errorFunc, suc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var matrixUser MatrixUser
|
||||||
|
matrixVerified := false
|
||||||
|
if matrixEnabled {
|
||||||
|
if req.MatrixPIN == "" {
|
||||||
|
if app.config.Section("matrix").Key("required").MustBool(false) {
|
||||||
|
f = func(gc *gin.Context) {
|
||||||
|
app.debug.Printf("%s: New user failed: Matrix verification not completed", req.Code)
|
||||||
|
respond(401, "errorMatrixVerification")
|
||||||
|
}
|
||||||
|
success = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
user, ok := app.matrix.tokens[req.MatrixPIN]
|
||||||
|
if !ok || !user.Verified {
|
||||||
|
matrixVerified = false
|
||||||
|
f = func(gc *gin.Context) {
|
||||||
|
app.debug.Printf("%s: New user failed: Matrix PIN was invalid", req.Code)
|
||||||
|
respond(401, "errorInvalidPIN", gc)
|
||||||
|
}
|
||||||
|
success = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
matrixVerified = user.Verified
|
||||||
|
matrixUser = *user.User
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
telegramTokenIndex := -1
|
telegramTokenIndex := -1
|
||||||
if telegramEnabled {
|
if telegramEnabled {
|
||||||
if req.TelegramPIN == "" {
|
if req.TelegramPIN == "" {
|
||||||
@ -536,7 +564,16 @@ func (app *appContext) newUser(req newUserDTO, confirmed bool) (f errorFunc, suc
|
|||||||
app.telegram.verifiedTokens = app.telegram.verifiedTokens[:len(app.telegram.verifiedTokens)-1]
|
app.telegram.verifiedTokens = app.telegram.verifiedTokens[:len(app.telegram.verifiedTokens)-1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if matrixVerified {
|
||||||
|
delete(app.matrix.tokens, req.MatrixPIN)
|
||||||
|
if app.storage.matrix == nil {
|
||||||
|
app.storage.matrix = map[string]MatrixUser{}
|
||||||
|
}
|
||||||
|
app.storage.matrix[user.ID] = matrixUser
|
||||||
|
if err := app.storage.storeMatrixUsers; err != nil {
|
||||||
|
app.err.Printf("Failed to store Matrix users: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
if (emailEnabled && app.config.Section("welcome_email").Key("enabled").MustBool(false) && req.Email != "") || telegramTokenIndex != -1 || discordVerified {
|
if (emailEnabled && app.config.Section("welcome_email").Key("enabled").MustBool(false) && req.Email != "") || telegramTokenIndex != -1 || discordVerified {
|
||||||
name := app.getAddressOrName(user.ID)
|
name := app.getAddressOrName(user.ID)
|
||||||
app.debug.Printf("%s: Sending welcome message to %s", req.Username, name)
|
app.debug.Printf("%s: Sending welcome message to %s", req.Username, name)
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
"errorInvalidCode": "Invalid invite code.",
|
"errorInvalidCode": "Invalid invite code.",
|
||||||
"errorTelegramVerification": "Telegram verification required.",
|
"errorTelegramVerification": "Telegram verification required.",
|
||||||
"errorDiscordVerification": "Discord verification required.",
|
"errorDiscordVerification": "Discord verification required.",
|
||||||
|
"errorMatrixVerification": "Matrix verification required.",
|
||||||
"errorInvalidPIN": "PIN is invalid.",
|
"errorInvalidPIN": "PIN is invalid.",
|
||||||
"errorUnknown": "Unknown error.",
|
"errorUnknown": "Unknown error.",
|
||||||
"verified": "Account verified."
|
"verified": "Account verified."
|
||||||
|
@ -19,6 +19,8 @@ type newUserDTO struct {
|
|||||||
TelegramContact bool `json:"telegram_contact"` // Whether or not to use telegram for notifications/pwrs
|
TelegramContact bool `json:"telegram_contact"` // Whether or not to use telegram for notifications/pwrs
|
||||||
DiscordPIN string `json:"discord_pin" example:"A1-B2-3C"` // Discord verification PIN (if used)
|
DiscordPIN string `json:"discord_pin" example:"A1-B2-3C"` // Discord verification PIN (if used)
|
||||||
DiscordContact bool `json:"discord_contact"` // Whether or not to use discord for notifications/pwrs
|
DiscordContact bool `json:"discord_contact"` // Whether or not to use discord for notifications/pwrs
|
||||||
|
MatrixPIN string `json:"matrix_pin" example:"A1-B2-3C"` // Matrix verification PIN (if used)
|
||||||
|
MatrixContact bool `json:"matrix_contact"` // Whether or not to use matrix for notifications/pwrs
|
||||||
}
|
}
|
||||||
|
|
||||||
type newUserResponse struct {
|
type newUserResponse struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user