diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index e76cffe44..286475357 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -1596,6 +1596,7 @@ "253": "جارٍ ضغط الملف [%s]، يرجى الانتظار...", "254": "[Region ID] معرّف المنطقة غير صحيح، يرجى الرجوع إلى وثائق مزود خدمة S3 لتكوين معرّف المنطقة", "255": "قام الموقع المستهدف بتمكين حماية الروابط المباشرة، لذلك لا يمكن تنزيل [%d] من الموارد", - "256": "المسار المحدد [%s] يحتوي على مسار مساحة عمل رئيسي [%s]" + "256": "المسار المحدد [%s] يحتوي على مسار مساحة عمل رئيسي [%s]", + "257": "تذكرني لمدة 30 يومًا" } } diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 50eb64536..45fcce151 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -1596,6 +1596,7 @@ "253": "Datei [%s] wird komprimiert, bitte warten...", "254": "[Region ID] Falsche Regions-ID, bitte konsultieren Sie die Dokumentation des S3-Dienstanbieters zur Konfiguration der Regions-ID", "255": "Die Zielseite hat den Hotlink-Schutz aktiviert, daher ist es nicht möglich, [%d] Ressourcen herunterzuladen", - "256": "Der angegebene Pfad [%s] hat einen übergeordneten Arbeitsbereichspfad [%s]" + "256": "Der angegebene Pfad [%s] hat einen übergeordneten Arbeitsbereichspfad [%s]", + "257": "Erinnere dich 30 Tage an mich" } } diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 020319f97..59c1a1a47 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1596,6 +1596,7 @@ "253": "Comprimiendo el archivo [%s], por favor espere...", "254": "[Region ID] ID de región incorrecto, por favor consulte la documentación del proveedor de servicios S3 para configurar el ID de región", "255": "El sitio de destino ha activado la protección contra hotlinking, por lo que no es posible descargar [%d] recursos", - "256": "La ruta especificada [%s] tiene una ruta de espacio de trabajo padre [%s]" + "256": "La ruta especificada [%s] tiene una ruta de espacio de trabajo padre [%s]", + "257": "Recuérdame durante 30 días" } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 222195487..866313ead 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1596,6 +1596,7 @@ "253": "Compression du fichier [%s], veuillez patienter...", "254": "[Region ID] ID de région incorrect, veuillez consulter la documentation du fournisseur de services S3 pour configurer l'ID de région", "255": "Le site cible a activé la protection contre le hotlinking, il est donc impossible de télécharger [%d] ressources", - "256": "Le chemin spécifié [%s] contient un chemin d'espace de travail parent [%s]" + "256": "Le chemin spécifié [%s] contient un chemin d'espace de travail parent [%s]", + "257": "Souviens-toi de moi pendant 30 jours" } } diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 01656beaa..593ea3844 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -1596,6 +1596,7 @@ "253": "דוחס את הקובץ [%s], אנא המתן...", "254": "[Region ID] מזהה האזור שגוי, אנא עיין בתיעוד ספק שירותי S3 כדי להגדיר את מזהה האזור", "255": "האתר היעד הפעיל הגנה על קישורים חמים, ולכן לא ניתן להוריד [%d] משאבים", - "256": "הנתיב שצוין [%s] מכיל נתיב מרחב עבודה אב [%s]" + "256": "הנתיב שצוין [%s] מכיל נתיב מרחב עבודה אב [%s]", + "257": "זכור אותי למשך 30 יום" } } diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index c893a95a2..aeaba7bf4 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -1596,6 +1596,7 @@ "253": "Compressione del file [%s], attendere prego...", "254": "[Region ID] ID regione non corretto, si prega di consultare la documentazione del fornitore di servizi S3 per configurare l'ID regione", "255": "Il sito di destinazione ha abilitato la protezione hotlink, quindi non è possibile scaricare [%d] risorse", - "256": "Il percorso specificato [%s] ha un percorso di spazio di lavoro padre [%s]" + "256": "Il percorso specificato [%s] ha un percorso di spazio di lavoro padre [%s]", + "257": "Ricordati di me per 30 giorni" } } diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 8b7989b07..7565dd625 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1596,6 +1596,7 @@ "253": "ファイル [%s] を圧縮しています、お待ちください...", "254": "[Region ID] リージョンIDが正しくありません。S3サービスプロバイダーのドキュメントを参照してリージョンIDを設定してください", "255": "ターゲットサイトはホットリンク保護を有効にしているため、[%d] 個のリソースをダウンロードできません", - "256": "指定されたパス [%s] の親にワークスペースパス [%s] が存在します" + "256": "指定されたパス [%s] の親にワークスペースパス [%s] が存在します", + "257": "30日間私を覚えていてください" } } diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index cb8cbb1b4..2f68124b3 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -1596,6 +1596,7 @@ "253": "Kompresja pliku [%s], proszę czekać...", "254": "[Region ID] Nieprawidłowy identyfikator regionu, proszę zapoznać się z dokumentacją dostawcy usług S3 w celu skonfigurowania identyfikatora regionu", "255": "Docelowa strona włączyła ochronę przed hotlinkowaniem, [%d] zasobów nie można pobrać", - "256": "Określona ścieżka [%s] ma nadrzędną ścieżkę przestrzeni roboczej [%s]" + "256": "Określona ścieżka [%s] ma nadrzędną ścieżkę przestrzeni roboczej [%s]", + "257": "Zapamiętaj mnie na 30 dni" } } diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index 6c2917779..c96230b7b 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -1596,6 +1596,7 @@ "253": "Сжатие файла [%s], пожалуйста, подождите...", "254": "[Region ID] Неправильный идентификатор региона, пожалуйста, обратитесь к документации поставщика услуг S3 для настройки идентификатора региона", "255": "Целевой сайт включил защиту от хотлинков, [%d] ресурсов невозможно скачать", - "256": "Указанный путь [%s] имеет родительский путь рабочей области [%s]" + "256": "Указанный путь [%s] имеет родительский путь рабочей области [%s]", + "257": "Запомнить меня на 30 дней" } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 173a1a568..868c57fc3 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1596,6 +1596,7 @@ "253": "正在壓縮文件 [%s],請稍等...", "254": "[Region ID] 不正確,請參考 S3 服務提供商的文檔配置地域 ID", "255": "目標站點啟用了防盜鏈,[%d] 個資源無法下載", - "256": "指定的路徑 [%s] 父級存在工作空間路徑 [%s]" + "256": "指定的路徑 [%s] 父級存在工作空間路徑 [%s]", + "257": "記住我 30 天" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 104d3e0dd..0f45a1516 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1596,6 +1596,7 @@ "253": "正在压缩文件 [%s],请稍等...", "254": "[Region ID] 不正确,请参考 S3 服务提供商的文档配置地域 ID", "255": "目标站点启用了防盗链,[%d] 个资源无法下载", - "256": "指定的路径 [%s] 父级存在工作空间路径 [%s]" + "256": "指定的路径 [%s] 父级存在工作空间路径 [%s]", + "257": "记住我 30 天" } } diff --git a/app/stage/auth.html b/app/stage/auth.html index a286a4ec7..a06b4b747 100644 --- a/app/stage/auth.html +++ b/app/stage/auth.html @@ -184,7 +184,7 @@ -
+
diff --git a/kernel/model/session.go b/kernel/model/session.go index 8b3ee4f55..9facca9d5 100644 --- a/kernel/model/session.go +++ b/kernel/model/session.go @@ -27,11 +27,11 @@ import ( "time" "github.com/88250/gulu" + ginSessions "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/util" - ginSessions "github.com/gin-contrib/sessions" "github.com/steambap/captcha" ) @@ -122,27 +122,20 @@ func LoginAuth(c *gin.Context) { workspaceSession.AccessAuthCode = authCode util.WrongAuthCount = 0 workspaceSession.Captcha = gulu.Rand.String(7) - - // Handle remember me preference - if rememberMe, ok := arg["rememberMe"].(bool); ok && rememberMe { - // Set session cookie to expire in 30 days - ginSessions.Default(c).Options(ginSessions.Options{ - Path: "/", - Secure: util.SSL, - MaxAge: 30 * 24 * 60 * 60, // 30 days in seconds - HttpOnly: true, - }) - } else { - // Default session expiration (browser session) - ginSessions.Default(c).Options(ginSessions.Options{ - Path: "/", - Secure: util.SSL, - MaxAge: 0, // Session cookie - HttpOnly: true, - }) - } - logging.LogInfof("auth success [ip=%s]", util.GetRemoteAddr(c.Request)) + maxAge := 0 // Default session expiration (browser session) + if rememberMe, ok := arg["rememberMe"].(bool); ok && rememberMe { + // Add a 'Remember me' checkbox when logging in to save a session https://github.com/siyuan-note/siyuan/pull/14964 + maxAge = 60 * 60 * 24 * 30 // 30 days + } + ginSessions.Default(c).Options(ginSessions.Options{ + Path: "/", + Secure: util.SSL, + MaxAge: maxAge, + HttpOnly: true, + }) + + logging.LogInfof("auth success [ip=%s, maxAge=%d]", util.GetRemoteAddr(c.Request), maxAge) if err := session.Save(c); err != nil { logging.LogErrorf("save session failed: " + err.Error()) c.Status(http.StatusInternalServerError)