FauziIsyrinApridal commited on
Commit
ba4a352
·
1 Parent(s): 4119d3c
Files changed (1) hide show
  1. app/auth.py +16 -9
app/auth.py CHANGED
@@ -29,19 +29,16 @@ def auth_view():
29
  unsafe_allow_html=True
30
  )
31
 
32
- # --- DEBUG & FIX: Auto convert hash (#) to query (?) ---
33
- # Try streamlit-url-fragment first
34
  fragment_detected = False
35
  try:
36
  from streamlit_url_fragment import get_fragment
37
  fragment = get_fragment()
38
- st.write(f"DEBUG: Fragment detected: {fragment}") # Temporary debug
39
 
40
  if fragment and not st.session_state.get("hash_migrated"):
41
  # Remove leading # if present and parse fragment parameters
42
  clean_fragment = fragment.lstrip('#')
43
  params = dict(parse_qsl(clean_fragment))
44
- st.write(f"DEBUG: Parsed params: {params}") # Temporary debug
45
 
46
  if params.get("type") == "recovery" and params.get("access_token"):
47
  # Set query params so existing recovery flow works
@@ -54,8 +51,8 @@ def auth_view():
54
  st.session_state["hash_migrated"] = True
55
  fragment_detected = True
56
  st.rerun()
57
- except Exception as e:
58
- st.write(f"DEBUG: Fragment library error: {e}") # Temporary debug
59
 
60
  # Always run JS fallback for reliability
61
  if not fragment_detected:
@@ -108,11 +105,21 @@ def auth_view():
108
  st.error("Token pemulihan tidak ditemukan. Coba klik ulang tautan dari email.")
109
  else:
110
  try:
 
111
  supabase.auth.set_session(access_token, refresh_token)
112
  supabase.auth.update_user({"password": npw})
113
- st.success("Password berhasil diubah. Anda akan diarahkan ke login...")
114
- # bersihkan query params setelah reset
115
- st.experimental_set_query_params()
 
 
 
 
 
 
 
 
 
116
  st.session_state.clear()
117
  st.rerun()
118
  except Exception as e:
 
29
  unsafe_allow_html=True
30
  )
31
 
32
+ # --- Auto convert hash (#) to query (?) using streamlit-url-fragment ---
 
33
  fragment_detected = False
34
  try:
35
  from streamlit_url_fragment import get_fragment
36
  fragment = get_fragment()
 
37
 
38
  if fragment and not st.session_state.get("hash_migrated"):
39
  # Remove leading # if present and parse fragment parameters
40
  clean_fragment = fragment.lstrip('#')
41
  params = dict(parse_qsl(clean_fragment))
 
42
 
43
  if params.get("type") == "recovery" and params.get("access_token"):
44
  # Set query params so existing recovery flow works
 
51
  st.session_state["hash_migrated"] = True
52
  fragment_detected = True
53
  st.rerun()
54
+ except Exception:
55
+ pass
56
 
57
  # Always run JS fallback for reliability
58
  if not fragment_detected:
 
105
  st.error("Token pemulihan tidak ditemukan. Coba klik ulang tautan dari email.")
106
  else:
107
  try:
108
+ # Set session temporarily to update password
109
  supabase.auth.set_session(access_token, refresh_token)
110
  supabase.auth.update_user({"password": npw})
111
+
112
+ # Sign out after password update
113
+ supabase.auth.sign_out()
114
+
115
+ st.success("Password berhasil diubah. Silakan login dengan password baru.")
116
+
117
+ # Clear session and query params
118
+ if hasattr(st, "query_params"):
119
+ st.query_params.clear()
120
+ else:
121
+ st.experimental_set_query_params()
122
+
123
  st.session_state.clear()
124
  st.rerun()
125
  except Exception as e: