瀏覽代碼

update Lang

student 6 天之前
父節點
當前提交
5bb4a3c8a1

+ 5 - 7
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Helpers/LoginRequiredMiddleware.cs

@@ -26,19 +26,21 @@ public class LoginRequiredMiddleware
             return;
         }
 
+        context.Response.Headers.CacheControl = "no-store";
         if (IsAjaxRequest(context.Request))
         {
             context.Response.StatusCode = StatusCodes.Status401Unauthorized;
+            context.Response.Headers["X-Login-Required"] = "true";
             await context.Response.WriteAsJsonAsync(new
             {
                 success = false,
                 errorCode = Common.CommonErrorCode.LoginRequired,
-                redirectUrl = BuildLoginUrl(context)
+                redirectUrl = "mytel://back"
             });
             return;
         }
 
-        context.Response.Redirect(BuildLoginUrl(context));
+        context.Response.Redirect("mytel://back");
     }
 
     private static bool ShouldSkip(HttpContext context)
@@ -60,12 +62,8 @@ public class LoginRequiredMiddleware
     private static bool IsAjaxRequest(HttpRequest request)
     {
         return string.Equals(request.Headers["X-Requested-With"], "XMLHttpRequest", StringComparison.OrdinalIgnoreCase)
+            || string.Equals(request.Headers["Sec-Fetch-Dest"], "empty", StringComparison.OrdinalIgnoreCase)
             || request.Headers.Accept.Any(x => x?.Contains("application/json", StringComparison.OrdinalIgnoreCase) == true);
     }
 
-    private static string BuildLoginUrl(HttpContext context)
-    {
-        var returnUrl = $"{context.Request.PathBase}{context.Request.Path}{context.Request.QueryString}";
-        return "/Login?returnUrl=" + Uri.EscapeDataString(string.IsNullOrWhiteSpace(returnUrl) ? "/" : returnUrl);
-    }
 }

+ 3 - 3
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Language/Lang.Designer.cs

@@ -727,7 +727,7 @@ namespace Kitty_Fall.Website.Language {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to 10MB Data / 5 loyalty / 40 score.
+        ///   Looks up a localized string similar to 10MB Data / 5 loyalty / 70 score.
         /// </summary>
         public static string GuideEasyReward10 {
             get {
@@ -736,7 +736,7 @@ namespace Kitty_Fall.Website.Language {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to 20MB Data / 10 loyalty / 70 score.
+        ///   Looks up a localized string similar to 20MB Data / 10 loyalty / 100 score.
         /// </summary>
         public static string GuideEasyReward15 {
             get {
@@ -799,7 +799,7 @@ namespace Kitty_Fall.Website.Language {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to 5MB Data / 3 loyalty / 20 score.
+        ///   Looks up a localized string similar to 5MB Data / 3 loyalty / 40 score.
         /// </summary>
         public static string GuideEasyReward5 {
             get {

+ 3 - 3
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Language/Lang.resx

@@ -439,13 +439,13 @@
     <value>Level - Score - Time - Reward Table</value>
   </data>
   <data name="GuideEasyReward5" xml:space="preserve">
-    <value>5MB Data / 3 loyalty / 20 score</value>
+    <value>5MB Data / 3 loyalty / 40 score</value>
   </data>
   <data name="GuideEasyReward10" xml:space="preserve">
-    <value>10MB Data / 5 loyalty / 40 score</value>
+    <value>10MB Data / 5 loyalty / 70 score</value>
   </data>
   <data name="GuideEasyReward15" xml:space="preserve">
-    <value>20MB Data / 10 loyalty / 70 score</value>
+    <value>20MB Data / 10 loyalty / 100 score</value>
   </data>
   <data name="GuideEasyReward20" xml:space="preserve">
     <value>40MB Data / 100 score</value>

+ 3 - 3
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Language/Lang.vi.resx

@@ -439,13 +439,13 @@
     <value>အဆင့် - ရမှတ် - အချိန် - ဆုလာဘ်ဇယား</value>
   </data>
   <data name="GuideEasyReward5" xml:space="preserve">
-    <value>5MB Data / 3 loyalty / 20 score</value>
+    <value>5MB Data / 3 loyalty / 40 score</value>
   </data>
   <data name="GuideEasyReward10" xml:space="preserve">
-    <value>10MB Data / 5 loyalty / 40 score</value>
+    <value>10MB Data / 5 loyalty / 70 score</value>
   </data>
   <data name="GuideEasyReward15" xml:space="preserve">
-    <value>20MB Data / 10 loyalty / 70 score</value>
+    <value>20MB Data / 10 loyalty / 100 score</value>
   </data>
   <data name="GuideEasyReward20" xml:space="preserve">
     <value>40MB Data / 100 score</value>

+ 2 - 2
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Views/DailyWinners/Index.cshtml

@@ -42,9 +42,9 @@
                 {
                 <svg class="daily-title-text" viewBox="0 0 320 75" aria-hidden="true">
                     <defs>
-                        <path id="daily-winner-title-path" d="M 58 44 Q 160 15 262 44" />
+                        <path id="daily-winner-title-path" d="M 48 44 Q 160 15 272 44" />
                     </defs>
-                    <text text-anchor="middle" textLength="190" lengthAdjust="spacing">
+                    <text text-anchor="middle">
                         <textPath href="#daily-winner-title-path" startOffset="50%">@Lang.DailyWinnerList</textPath>
                     </text>
                 </svg>

+ 1 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Views/Shared/_Layout.cshtml

@@ -201,6 +201,7 @@
     }
 
     <script src="~/kitty/lib/jquery/jquery.min.js" asp-append-version="true"></script>
+    <script src="~/js/session-redirect.js" asp-append-version="true"></script>
     <script src="~/kitty/js/all.min.js" asp-append-version="true"></script>
     <script src="~/kitty/js/curved-titles.js" asp-append-version="true"></script>
     <script>

+ 28 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/js/session-redirect.js

@@ -0,0 +1,28 @@
+(function () {
+    let returningToMyId = false;
+
+    function handleExpiredSession(status, loginRequired) {
+        if (status === 401 && loginRequired === "true" && !returningToMyId) {
+            returningToMyId = true;
+            window.location.href = "mytel://back";
+        }
+    }
+
+    // Covers jQuery and native XMLHttpRequest calls.
+    const originalSend = XMLHttpRequest.prototype.send;
+    XMLHttpRequest.prototype.send = function () {
+        this.addEventListener("load", function () {
+            handleExpiredSession(this.status, this.getResponseHeader("X-Login-Required"));
+        }, { once: true });
+        return originalSend.apply(this, arguments);
+    };
+
+    const originalFetch = window.fetch;
+    if (originalFetch) {
+        window.fetch = async function () {
+            const response = await originalFetch.apply(this, arguments);
+            handleExpiredSession(response.status, response.headers.get("X-Login-Required"));
+            return response;
+        };
+    }
+})();

+ 1 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/kitty/css/all.min.css

@@ -883,7 +883,7 @@ html[lang="my"] .package-action button {
 
 .daily-title-text text {
     fill: #fff;
-    font-size: 23px;
+    font-size: 20px;
     font-weight: 900;
     text-transform: uppercase;
 }

+ 1 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/wwwroot/kitty/css/input.css

@@ -883,7 +883,7 @@ html[lang="my"] .package-action button {
 
 .daily-title-text text {
     fill: #fff;
-    font-size: 23px;
+    font-size: 20px;
     font-weight: 900;
     text-transform: uppercase;
 }