commit a831a9f7ba853ec18ccf93f7fc95755b99cee978
parent da3c0d97c212cbe1b3e61d472df611e63a7b27a7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 25 Mar 2023 13:19:02 -0700
improve captcha template
Diffstat:
4 files changed, 57 insertions(+), 49 deletions(-)
diff --git a/pkg/web/handlers/data.go b/pkg/web/handlers/data.go
@@ -24,16 +24,17 @@ type homeAttackData struct {
}
type loginData struct {
- Autofocus int64
- Username string
- Password string
- Error string
- HomeUsersList bool
- CaptchaRequired bool
- ErrCaptcha string
- CaptchaID string
- CaptchaImg string
- Online []managers.UserInfo
+ Autofocus int64
+ Username string
+ Password string
+ Error string
+ HomeUsersList bool
+ CaptchaRequired bool
+ ErrCaptcha string
+ CaptchaID string
+ CaptchaImg string
+ CaptchaAnswerImg string
+ Online []managers.UserInfo
}
type sessionsTwoFactorData struct {
@@ -73,6 +74,7 @@ type signupData struct {
Password string
RePassword string
CaptchaImg string
+ CaptchaAnswerImg string
CaptchaID string
Captcha string
CaptchaSec int64
@@ -85,6 +87,7 @@ type signupData struct {
type byteRoadChallengeData struct {
ActiveTab string
CaptchaImg string
+ CaptchaAnswerImg string
CaptchaID string
Captcha string
Username string
@@ -111,6 +114,7 @@ type forgotPasswordData struct {
Captcha string
CaptchaID string
CaptchaImg string
+ CaptchaAnswerImg string
ErrCaptcha string
GpgMode bool
ToBeSignedMessage string
@@ -371,6 +375,7 @@ type chatData struct {
IsSubscribed bool
CaptchaID string
CaptchaImg string
+ CaptchaAnswerImg string
ErrGuestUsername string
ErrCaptcha string
TutoSecs int64
@@ -399,45 +404,49 @@ type roomChatSettingsData struct {
}
type chatCreateRoomData struct {
- RoomName string
- Password string
- IsListed bool
- IsEphemeral bool
- Error string
- ErrorRoomName string
- CaptchaImg string
- CaptchaID string
- Captcha string
- ErrCaptcha string
+ RoomName string
+ Password string
+ IsListed bool
+ IsEphemeral bool
+ Error string
+ ErrorRoomName string
+ CaptchaImg string
+ CaptchaAnswerImg string
+ CaptchaID string
+ Captcha string
+ ErrCaptcha string
}
type captchaData struct {
- Ts int64
- Seed int64
- CaptchaSec int64
- Frames []string
- CaptchaImg string
- CaptchaID string
- ShowAnswer bool
- Answer string
- Captcha string
- Success string
- Error string
+ Ts int64
+ Seed int64
+ CaptchaSec int64
+ Frames []string
+ CaptchaImg string
+ CaptchaAnswerImg string
+ CaptchaID string
+ ShowAnswer bool
+ Answer string
+ Captcha string
+ Success string
+ Error string
}
type captchaRequiredData struct {
CaptchaDescription string
CaptchaID string
CaptchaImg string
+ CaptchaAnswerImg string
ErrCaptcha string
}
type bhcData struct {
- CaptchaImg string
- CaptchaID string
- Captcha string
- Success string
- Error string
+ CaptchaImg string
+ CaptchaAnswerImg string
+ CaptchaID string
+ Captcha string
+ Success string
+ Error string
}
type adminData struct {
@@ -844,17 +853,13 @@ type adminGistsData struct {
}
type adminCreateGistData struct {
- ActiveTab string
- IsEdit bool
- Name string
- Content string
- Password string
- Error string
- ErrorName string
- CaptchaImg string
- CaptchaID string
- Captcha string
- ErrCaptcha string
+ ActiveTab string
+ IsEdit bool
+ Name string
+ Content string
+ Password string
+ Error string
+ ErrorName string
}
type publicProfileData struct {
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -3879,7 +3879,7 @@ func CaptchaHandler(c echo.Context) error {
data.ShowAnswer = true
}
setCaptcha := func(seed int64) {
- data.CaptchaID, data.Answer, data.CaptchaImg, _ = captcha.NewWithSolution(seed)
+ data.CaptchaID, data.Answer, data.CaptchaImg, data.CaptchaAnswerImg = captcha.NewWithSolution(seed)
}
data.Seed = time.Now().UnixNano()
data.Ts = time.Now().UnixMilli()
diff --git a/pkg/web/public/views/pages/captcha-tmpl.gohtml b/pkg/web/public/views/pages/captcha-tmpl.gohtml
@@ -9,6 +9,9 @@
</style>
<div>
<img src="data:image/png;base64,{{ .Data.CaptchaImg }}" alt="captcha" class="captcha-img" />
+ {{ if .Data.CaptchaAnswerImg }}
+ <img src="data:image/png;base64,{{ .Data.CaptchaAnswerImg }}" alt="captcha answer" class="captcha-img" />
+ {{ end }}
<div><a href="/captcha-help">Need help to solve the captcha?</a></div>
</div>
{{ end }}
\ No newline at end of file
diff --git a/pkg/web/web.go b/pkg/web/web.go
@@ -209,7 +209,7 @@ func getMainServer(db *database.DkfDB, i18nBundle *i18n.Bundle, renderer *tmp.Te
authGroup.GET("/chat", handlers.ChatHandler)
authGroup.POST("/chat", handlers.ChatHandler, middlewares.AuthRateLimitMiddleware(1*time.Second, 2))
authGroup.GET("/chat/help", handlers.ChatHelpHandler)
- authGroup.GET("/chat/create-room", handlers.ChatCreateRoomHandler)
+ authGroup.GET("/chat/create-room", handlers.ChatCreateRoomHandler, middlewares.AuthRateLimitMiddleware(1*time.Second, 2))
authGroup.POST("/chat/create-room", handlers.ChatCreateRoomHandler, middlewares.AuthRateLimitMiddleware(1*time.Second, 2))
authGroup.GET("/chat/:roomName/archive", handlers.ChatArchiveHandler)
authGroup.GET("/chat/:roomName/delete", handlers.ChatDeleteHandler)