forked from baron/baron-sso
링크로 로그인하기 구현 완료
This commit is contained in:
@@ -35,6 +35,7 @@ const (
|
||||
prefixLoginCodeSmsTarget = "login_code_sms_target:"
|
||||
prefixLoginCodeSmsLookup = "login_code_sms_lookup:"
|
||||
prefixLoginCodeShort = "login_code_short:"
|
||||
prefixLoginCodeSmsOnly = "login_code_sms_only:"
|
||||
prefixPollMeta = "poll_meta:"
|
||||
prefixSignupEmail = "signup:email:"
|
||||
prefixSignupPhone = "signup:phone:"
|
||||
@@ -630,6 +631,11 @@ func (h *AuthHandler) InitEnchantedLink(c *fiber.Ctx) error {
|
||||
if init.LoginID != "" {
|
||||
keyLoginID = init.LoginID
|
||||
}
|
||||
if !strings.Contains(loginID, "@") && req.CodeOnly {
|
||||
_ = h.RedisService.Set(prefixLoginCodeSmsOnly+keyLoginID, "1", loginCodeExpiration)
|
||||
} else {
|
||||
_ = h.RedisService.Delete(prefixLoginCodeSmsOnly + keyLoginID)
|
||||
}
|
||||
if init.FlowID != "" {
|
||||
_ = h.RedisService.Set(prefixLoginCode+keyLoginID, init.FlowID, loginCodeExpiration)
|
||||
}
|
||||
@@ -644,6 +650,9 @@ func (h *AuthHandler) InitEnchantedLink(c *fiber.Ctx) error {
|
||||
if !init.ExpiresAt.IsZero() {
|
||||
expiresIn = int(time.Until(init.ExpiresAt).Seconds())
|
||||
}
|
||||
if expiresIn <= 0 {
|
||||
expiresIn = int(loginCodeExpiration.Seconds())
|
||||
}
|
||||
return c.JSON(fiber.Map{
|
||||
"linkId": "Sent",
|
||||
"pendingRef": pendingRef,
|
||||
@@ -1609,10 +1618,13 @@ type shortLoginCodePayload struct {
|
||||
}
|
||||
|
||||
func (h *AuthHandler) buildKratosShortSmsBody(req *kratosCourierRequest, loginID, phone string) string {
|
||||
_, link, ok := h.prepareKratosShortLogin(req, loginID)
|
||||
shortCode, link, ok := h.prepareKratosShortLogin(req, loginID)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
if h.isSmsCodeOnly(loginID) {
|
||||
return fmt.Sprintf("[Baron 통합로그인] 로그인 코드: %s", shortCode)
|
||||
}
|
||||
return fmt.Sprintf("[Baron 통합로그인] %s", link)
|
||||
}
|
||||
|
||||
@@ -1667,6 +1679,14 @@ func (h *AuthHandler) prepareKratosShortLogin(req *kratosCourierRequest, loginID
|
||||
return shortCode, link, true
|
||||
}
|
||||
|
||||
func (h *AuthHandler) isSmsCodeOnly(loginID string) bool {
|
||||
if loginID == "" {
|
||||
return false
|
||||
}
|
||||
val, _ := h.RedisService.Get(prefixLoginCodeSmsOnly + loginID)
|
||||
return val != ""
|
||||
}
|
||||
|
||||
func (h *AuthHandler) generateShortCode(code string) string {
|
||||
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
for i := 0; i < 10; i++ {
|
||||
|
||||
Reference in New Issue
Block a user