2 lines
9.9 KiB
JavaScript
2 lines
9.9 KiB
JavaScript
|
|
import{a as r,j as s}from"./vendor-react-YMhRUmcb.js";import{C as N}from"./confirmation-dialog-O1mUMh9e.js";import{a as k,p as b,l as y,B as R,L as A,s as S,C as D,b as E,c as I,f as M,e as F}from"./index-D2uzyr9g.js";import{l as O,az as U,ap as B,T as $,m as z,aA as H,aB as G,au as Y,O as q}from"./vendor-icons-DINCNwpk.js";import"./vendor-fFnFILYR.js";import"./vendor-router-DX94Iu-2.js";import"./vendor-tanstack-CoFNL2zy.js";import"./vendor-utils-4BWoYre8.js";function L(e){const i=e.toLowerCase(),t={deviceType:"unknown",os:"Unknown",browser:"Unknown"};if(i.includes("mobile")||i.includes("android")||i.includes("iphone")?t.deviceType="mobile":i.includes("tablet")||i.includes("ipad")?t.deviceType="tablet":t.deviceType="desktop",i.includes("windows")){t.os="Windows";const a=i.match(/windows nt (\d+\.\d+)/);if(a){const n=a[1];n==="10.0"?t.osVersion="10":n==="6.3"?t.osVersion="8.1":n==="6.2"?t.osVersion="8":n==="6.1"?t.osVersion="7":t.osVersion=n}}else if(i.includes("mac os x")||i.includes("macintosh")){t.os="macOS";const a=i.match(/mac os x (\d+[._]\d+)/);a&&(t.osVersion=a[1].replace("_","."))}else if(i.includes("linux"))t.os="Linux";else if(i.includes("android")){t.os="Android";const a=i.match(/android (\d+\.\d+)/);a&&(t.osVersion=a[1])}else if(i.includes("ios")||i.includes("iphone")||i.includes("ipad")){t.os="iOS";const a=i.match(/os (\d+[._]\d+)/);a&&(t.osVersion=a[1].replace("_","."))}if(i.includes("edg/")){t.browser="Microsoft Edge";const a=i.match(/edg\/(\d+\.\d+)/);a&&(t.browserVersion=a[1])}else if(i.includes("chrome/")&&!i.includes("edg/")){t.browser="Chrome";const a=i.match(/chrome\/(\d+\.\d+)/);a&&(t.browserVersion=a[1])}else if(i.includes("firefox/")){t.browser="Firefox";const a=i.match(/firefox\/(\d+\.\d+)/);a&&(t.browserVersion=a[1])}else if(i.includes("safari/")&&!i.includes("chrome/")){t.browser="Safari";const a=i.match(/version\/(\d+\.\d+)/);a&&(t.browserVersion=a[1])}else if(i.includes("opera/")||i.includes("opr/")){t.browser="Opera";const a=i.match(/(?:opera|opr)\/(\d+\.\d+)/);a&&(t.browserVersion=a[1])}if(i.includes("iphone"))i.match(/iphone\s+os\s+(\d+[._]\d+)/)&&(t.deviceModel="iPhone");else if(i.includes("ipad"))t.deviceModel="iPad";else if(i.includes("android")){const a=i.match(/android.*?;\s*([^)]+)\)/);a&&(t.deviceModel=a[1].trim())}return t}function J(e){const i=[];return e.deviceModel&&i.push(e.deviceModel),i.push(e.os),e.osVersion&&i.push(e.osVersion),i.push(e.browser),e.browserVersion&&i.push(e.browserVersion),i.join(" • ")}function K(e){if(!e)return"Unknown location";const i=[];return e.city&&i.push(e.city),e.region&&i.push(e.region),e.country&&i.push(e.country),i.length>0?i.join(", "):"Unknown location"}function Q(e){return e==="127.0.0.1"||e==="localhost"||e.startsWith("192.168.")||e.startsWith("10.")||e.startsWith("172.16.")||e.startsWith("172.17.")||e.startsWith("172.18.")||e.startsWith("172.19.")||e.startsWith("172.20.")||e.startsWith("172.21.")||e.startsWith("172.22.")||e.startsWith("172.23.")||e.startsWith("172.24.")||e.startsWith("172.25.")||e.startsWith("172.26.")||e.startsWith("172.27.")||e.startsWith("172.28.")||e.startsWith("172.29.")||e.startsWith("172.30.")||e.startsWith("172.31.")}function X(e){const[i,t]=r.useState(e?.initialSessions??[]),[a,n]=r.useState(e?.isLoading??!0),[g,m]=r.useState(null),[p,x]=r.useState(!1),[j,c]=r.useState(null),[d,h]=r.useState(null),[w,f]=r.useState(!1),o=r.useCallback(async()=>{try{n(!0),c(null);const l=await k.get("/auth/sessions");t(l.data.sessions)}catch(l){const u=b(l);y.error("Failed to fetch sessions",{message:u.message}),c(u.message)}finally{n(!1)}},[]);r.useEffect(()=>{if(e?.initialSessions!==void 0){t(e.initialSessions),n(!1);return}if(e?.isLoading===!0){n(!0);return}o()},[o,e?.initialSessions,e?.isLoading]);const v=r.useCallback(l=>{h(l)},[]),V=r.useCallback(async()=>{if(d)try{m(d),c(null),await k.delete(`/auth/sessions/${d}`),await o(),h(null)}catch(l){const u=b(l);y.error("Failed to revoke session",{message:u.message,sessionId:d}),c(u.message)}finally{m(null)}},[d,o]),W=r.useCallback(()=>{f(!0)},[]),_=r.useCallback(async()=>{try{x(!0),
|