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