Explorar o código

Merge pull request #2614 from openNAMU/tmp

일부 수정
잉여개발기 hai 2 meses
pai
achega
ec962dc522
Modificáronse 6 ficheiros con 38 adicións e 20 borrados
  1. 20 13
      route/login_login.py
  2. 8 1
      route/login_logout.py
  3. 3 0
      route/tool/func.py
  4. 3 3
      version.json
  5. 3 2
      views/ringo/index.html
  6. 1 1
      views/ringo/info.json

+ 20 - 13
route/login_login.py

@@ -10,6 +10,10 @@ async def login_login():
 
         if (await ban_check(None, 'login'))[0] == 1:
             return await re_error(conn, 0)
+        
+        return_url = flask.request.args.get('return', '')
+        if not return_url.startswith('/') or return_url.startswith('//') or '\\' in return_url:
+            return_url = ''
 
         if flask.request.method == 'POST':
             if await captcha_post(conn, flask.request.form.get('g-recaptcha-response', flask.request.form.get('g-recaptcha', ''))) == 1:
@@ -47,23 +51,26 @@ async def login_login():
 
                 ua_plus(conn, user_id, ip, user_agent, get_time())
 
-                return redirect(conn, '/user')
+                if return_url != '':
+                    return redirect(conn, return_url)
+                else:
+                    return redirect(conn, '/user')
         else:
             return await render_template(
                 await get_lang('login'),
                 '''
-                        <form method="post">
-                            <input class="__ON_INPUT__" placeholder="''' + await get_lang('id') + '''" name="id" type="text">
-                            <hr class="main_hr">
-                            <input class="__ON_INPUT__" placeholder="''' + await get_lang('password') + '''" name="pw" type="password">
-                            <hr class="main_hr">
-                            <!-- <label class="__ON_CHECKLABEL__"><input class="__ON_CHECKBOX__" type="checkbox" name="auto_login"> ''' + await get_lang('auto_login') + ''' (''' + await get_lang('not_working') + ''')</label>
-                            <hr class="main_hr"> -->
-                            ''' + await captcha_get(conn) + '''
-                            <button class="__ON_BUTTON__" type="submit">''' + await get_lang('login') + '''</button>
-                            ''' + await http_warning() + '''
-                        </form>
-                        ''',
+                <form method="post">
+                    <input class="__ON_INPUT__" placeholder="''' + await get_lang('id') + '''" name="id" type="text">
+                    <hr class="main_hr">
+                    <input class="__ON_INPUT__" placeholder="''' + await get_lang('password') + '''" name="pw" type="password">
+                    <hr class="main_hr">
+                    <!-- <label class="__ON_CHECKLABEL__"><input class="__ON_CHECKBOX__" type="checkbox" name="auto_login"> ''' + await get_lang('auto_login') + ''' (''' + await get_lang('not_working') + ''')</label>
+                    <hr class="main_hr"> -->
+                    ''' + await captcha_get(conn) + '''
+                    <button class="__ON_BUTTON__" type="submit">''' + await get_lang('login') + '''</button>
+                    ''' + await http_warning() + '''
+                </form>
+                ''',
                 0,
                 [['user', await get_lang('return')]]
             )

+ 8 - 1
route/login_logout.py

@@ -2,7 +2,14 @@ from .tool.func import *
 
 async def login_logout():
     with get_db_connect() as conn:
+        return_url = flask.request.args.get('return', '')
+        if not return_url.startswith('/') or return_url.startswith('//') or '\\' in return_url:
+            return_url = ''
+
         flask.session.pop('state', None)
         flask.session.pop('id', None)
 
-        return redirect(conn, '/user')
+        if return_url != '':
+            return redirect(conn, return_url)
+        else:
+            return redirect(conn, '/user')

+ 3 - 0
route/tool/func.py

@@ -107,6 +107,9 @@ async def render_template(name, data, sub, menu, other = []):
     other_set["data"] = data
     other_set["sub"] = [sub] + other
     other_set["menu"] = menu
+    other_set["option"] = {
+        "path" : flask.request.path
+    }
 
     return await python_to_golang("post", other_set = other_set, path = "template")
 

+ 3 - 3
version.json

@@ -1,6 +1,6 @@
 {
-    "r_ver" : "v3.6.0-Beta-v52",
-    "c_ver" : "20250524",
+    "r_ver" : "v3.6.0-Beta-v53",
+    "c_ver" : "20250525",
     "s_ver" : "20240426",
-    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-12-07-Beta-v10/"
+    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-12-07-Beta-v11/"
 }

+ 3 - 2
views/ringo/index.html

@@ -30,6 +30,7 @@
         <meta name="keywords" content="{{title}}">
         <meta name="description" content="{{description_doc}}">
         <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="canonical" href="{{user_path}}" />
     </head>
     <body>
         <header id="main">
@@ -129,12 +130,12 @@
                                 <span class="iconify" data-icon="ic:twotone-stars" data-inline="true"></span>
                                 {{'star_doc'|load_lang}}
                             </a>
-                            <a href="/logout">
+                            <a href="/logout?return={{user_path}}">
                                 <span class="iconify" data-icon="ic:baseline-logout" data-inline="true"></span>
                                 {{'logout'|load_lang}}
                             </a>
                         {% else %}
-                            <a href="/login">
+                            <a href="/login?return={{user_path}}">
                                 <span class="iconify" data-icon="ic:baseline-login" data-inline="true"></span>
                                 {{'login'|load_lang}}
                             </a>

+ 1 - 1
views/ringo/info.json

@@ -1,5 +1,5 @@
 {
     "name" : "Ringo",
-    "skin_ver" : "v1.2.0",
+    "skin_ver" : "v1.2.1",
     "require_ver" : "20240426"
 }