1"use strict";(self.webpackChunkmy_webpack_project=self.webpackChunkmy_webpack_project||[]).push([[4574],{95218(e,t,r){var o=r(23710),n=r(47671);const a=(0,o.A)((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");r.d(t,["A",0,a])},65195(e,t,r){r.d(t,{A:()=>E});var o=r(21098),n=r(82195),a=r(39471),s=r(34164),i=r(26896),l=r(88094),c=r(55082),u=r(96664),d=r(34192),m=r(51611),g=r(47671);const f=["className","component","disableGutters","fixed","maxWidth","classes"],p=(0,m.A)(),h=(0,d.A)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,c.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),b=e=>(0,u.A)({props:e,name:"MuiContainer",defaultTheme:p});var v=r(25119),x=r(58659),y=r(26946);const A=function(e={}){const{createStyledComponent:t=h,useThemeProps:r=b,componentName:u="MuiContainer"}=e,d=t(({theme:e,ownerState:t})=>(0,n.A)({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",display:"block"},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}),({theme:e,ownerState:t})=>t.fixed&&Object.keys(e.breakpoints.values).reduce((t,r)=>{const o=r,n=e.breakpoints.values[o];return 0!==n&&(t[e.breakpoints.up(o)]={maxWidth:`${n}${e.breakpoints.unit}`}),t},{}),({theme:e,ownerState:t})=>(0,n.A)({},"xs"===t.maxWidth&&{[e.breakpoints.up("xs")]:{maxWidth:Math.max(e.breakpoints.values.xs,444)}},t.maxWidth&&"xs"!==t.maxWidth&&{[e.breakpoints.up(t.maxWidth)]:{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`}})),m=a.forwardRef(function(e,t){const a=r(e),{className:m,component:p="div",disableGutters:h=!1,fixed:b=!1,maxWidth:v="lg"}=a,x=(0,o.A)(a,f),y=(0,n.A)({},a,{component:p,disableGutters:h,fixed:b,maxWidth:v}),A=((e,t)=>{const{classes:r,fixed:o,disableGutters:n,maxWidth:a}=e,s={root:["root",a&&`maxWidth${(0,c.A)(String(a))}`,o&&"fixed",n&&"disableGutters"]};return(0,l.A)(s,e=>(0,i.Ay)(t,e),r)})(y,u);return(0,g.jsx)(d,(0,n.A)({as:p,ownerState:y,className:(0,s.A)(A.root,m),ref:t},x))});return m}({createStyledComponent:(0,x.Ay)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`maxWidth${(0,v.A)(String(r.maxWidth))}`],r.fixed&&t.fixed,r.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,y.b)({props:e,name:"MuiContainer"})}),E=A},34192(e,t,r){const o=(0,r(63860).Ay)();r.d(t,["A",0,o])},32193(e,t,r){r.r(t),r.d(t,{default:()=>R});var o=r(39471),n=r(65195),a=r(86822),s=r(5185),i=r(8569),l=r(35256),c=r(31812),u=r(48158),d=r(50138),m=r(1996),g=r(21698),f=r(95236),p=r(45345),h=r(35710),b=r(23710),v=r(47671);const x=(0,b.A)((0,v.jsx)("path",{d:"M4 6h18V4H4c-1.1 0-2 .9-2 2v11H0v3h14v-3H4zm19 2h-6c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1m-1 9h-4v-7h4z"}),"Devices");var y=r(95218);const A=(0,b.A)((0,v.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var E=r(32972),w=r(18467),C=r(80943),k=r(29934),S=r(28374),F=r(86052),j=r(51794);function W(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?W(Object(r),!0).forEach(function(t){O(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function O(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function L(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,a,s,i=[],l=!0,c=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(o=a.call(r)).done)&&(i.push(o.value),i.length!==t);l=!0);}catch(e){c=!0,n=e}
1finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw n}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}const R=()=>{const e=(0,E.Zp)(),t=(0,w.wA)(),r=L((0,o.useState)([]),2),b=r[0],v=r[1],W=L((0,o.useState)(!0),2),O=W[0],P=W[1],R=L((0,o.useState)(null),2),z=R[0],T=R[1],M=L((0,o.useState)(!1),2),G=M[0],D=M[1],H=L((0,o.useState)({open:!1,type:null,sessionKey:null}),2),$=H[0],I=H[1],Y=L((0,o.useState)({open:!1,message:"",severity:"success"}),2),N=Y[0],_=Y[1];(0,o.useEffect)(()=>{K()},[]);const K=async()=>{try{P(!0);const e=await j.Http.get("/users/active-sessions/");v(e.data.sessions||[])}catch(t){var e;console.error("Error fetching sessions:",t),401!==(null===(e=t.response)||void 0===e?void 0:e.status)&&V("Failed to load sessions. Please try again.","error")}finally{P(!1)}},J=function(e){I({open:!0,type:e,sessionKey:arguments.length>1&&void 0!==arguments[1]?arguments[1]:null})},U=()=>{I({open:!1,type:null,sessionKey:null})},V=function(e){_({open:!0,message:e,severity:arguments.length>1&&void 0!==arguments[1]?arguments[1]:"success"})},Q=()=>{_(e=>B(B({},e),{},{open:!1}))},Z=b.find(e=>e.is_current),q=b.filter(e=>!e.is_current),X=(()=>{switch($.type){case"single":return{title:"Logout from this device?",message:"You will need to login again on this device.",confirmLabel:"Logout",confirmColor:"error"};case"all-others":return{title:"Logout from all other devices?",message:"You will be logged out from ".concat(q.length," other device(s). Your current session will remain active."),confirmLabel:"Logout All Others",confirmColor:"warning"};case"all":return{title:"Logout from all devices?",message:"â ï¸ You will be logged out from ALL devices including this one. You will need to login again.",confirmLabel:"Logout Everywhere",confirmColor:"error"};default:return{title:"",message:"",confirmLabel:"Confirm",confirmColor:"primary"}}})();return o.createElement(n.A,{maxWidth:"lg",className:"logged-in-devices-page"},o.createElement(a.A,{sx:{py:4}},o.createElement(a.A,{sx:{mb:4}},o.createElement(a.A,{sx:{display:"flex",alignItems:"center",gap:2,mb:1}},o.createElement(a.A,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:48,height:48,borderRadius:"12px",background:"linear-gradient(135deg, #34B5B1 0%, #2A9A96 100%)",boxShadow:"0 4px 12px rgba(52, 181, 177, 0.25)"}},o.createElement(x,{sx:{fontSize:28,color:"#fff"}})),o.createElement(s.A,{variant:"h4",sx:{fontWeight:600,color:"#2B2A2A",fontSize:{xs:"24px",sm:"32px"}}},"Logged-in Devices")),o.createElement(s.A,{variant:"body1",sx:{color:"#666",fontSize:"16px",ml:{xs:0,sm:6}}},"Manage devices where you are currently logged in")),!O&&b.length>1&&o.createElement(a.A,{sx:{mb:4,p:3,backgroundColor:"#F8FAFB",borderRadius:"12px",border:"1px solid #E5E7EB"}},o.createElement(s.A,{variant:"body2",sx:{mb:2,color:"#2B2A2A",fontWeight:500}},"Quick Actions"),o.createElement(a.A,{sx:{display:"flex",gap:2,flexWrap:"wrap"}},o.createElement(i.A,{variant:"outlined",disabled:G||0===q.length,onClick:()=>J("all-others"),sx:{textTransform:"none",borderColor:"#FFA726",color:"#FFA726",fontWeight:500,whiteSpace:"nowrap","&:hover":{borderColor:"#FF9800",backgroundColor:"rgba(255, 167, 38, 0.05)"}}},G?"Processing...":"Logout ".concat(q.length," Other Device(s)")),o.createElement(i.A,{variant:"outlined",disabled:G,onClick:()=>J("all"),sx:{textTransform:"none",borderColor:"#FF6B6B",color:"#FF6B6B",fontWeight:500,whiteSpace:"nowrap","&:hover":{borderColor:"#FF5252",backgroundColor:"rgba(255, 107, 107, 0.05)"}}},G?"Processing...":"Logout From All Devices"))),O&&o.createElement(a.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"300px"}},o.createElement(l.A,{sx:{color:"#34B5B1"}})),!O&&o.createElement(o.Fragment,null,Z&&o.createElement(a.A,{sx:{mb:4}},o.createElement(s.A,{variant:"h6",sx:{mb:2,color:"#2B2A2A",fontWeight:600}},"Current Session"),o.createElement(F.A,{session:Z,isCurrent:!0})),q.length>0&&o.createElement(a.A,null,o.createElement(s.A,{variant:"h6",sx:{mb:2,color:"#2B2A2A",fontWeight:600}},"Other Active Sessions (",q.length,")"),o.createElement(c.Ay,{container:!0,spacing:3},q.map(e=>o.createElement(c.Ay,{item:!0,xs:12,sm:6,md:4,key:e.key},o.createElement(F.A,{session:e,isCurrent:!1,onLogout:t=>J("single",e.key),isLoggingOut:z===e.key}))))),1===b.length&&Z&&o.createElement(u.A,{sx:{p:4,textAlign:"center",backgroundColor:"#F8FAFB",border:"1px solid #E5E7EB",borderRadius:"12px",boxShadow:"none"}},o.createElement(a.A,{sx:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:80,height:80,borderRadius:"50%",background:"linear-gradient(135deg, #34B5B1 0%, #2A9A96 100%)",mb:2}},o.createElement(y.A,{sx:{fontSize:48,color:"#fff"}})),o.createElement(s.A,{variant:"h6",sx:{mb:1,color:"#2B2A2A"}},"This is your only active session"),o.createElement(s.A,{variant:"body2",sx:{color:"#666"}},"You are not logged in on any other devices")),0===b.length&&o.createElement(u.A,{sx:{p:4,textAlign:"center",backgroundColor:"#F8FAFB",border:"1px solid #E5E7EB",borderRadius:"12px",boxShadow:"none"}},o.createElement(a.A,{sx:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:80,height:80,borderRadius:"50%",background:"linear-gradient(135deg, #FFA726 0%, #FF9800 100%)",mb:2}},o.createElement(A,{sx:{fontSize:48,color:"#fff"}})),o.createElement(s.A,{variant:"h6",sx:{mb:1,color:"#2B2A2A"}}
1,"No active sessions found"),o.createElement(s.A,{variant:"body2",sx:{color:"#666",mb:2}},"Please refresh the page or login again"),o.createElement(i.A,{variant:"contained",onClick:K,sx:{backgroundColor:"#34B5B1",color:"#fff",textTransform:"none","&:hover":{backgroundColor:"#2A9A96"}}},"Refresh")))),o.createElement(d.A,{open:$.open,onClose:U,maxWidth:"sm",fullWidth:!0},o.createElement(m.A,{sx:{fontWeight:600,color:"#2B2A2A"}},X.title),o.createElement(g.A,null,o.createElement(s.A,{variant:"body1",sx:{color:"#666"}},X.message)),o.createElement(f.A,{sx:{p:2,gap:1}},o.createElement(i.A,{onClick:U,disabled:null!==z||G,sx:{textTransform:"none",color:"#666"}},"Cancel"),o.createElement(i.A,{onClick:()=>{switch($.type){case"single":$.sessionKey&&(async e=>{const t=b;try{T(e),v(t=>t.filter(t=>t.key!==e));const t=await(e=>j.Http.delete("/users/sessions/".concat(e,"/")))(e);V(t.data.message||"Session logged out successfully","success"),U()}catch(e){var r,o;console.error("Error logging out device:",e),v(t),401!==(null===(r=e.response)||void 0===r?void 0:r.status)&&V((null===(o=e.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.message)||"Failed to logout session. Please try again.","error")}finally{T(null)}})($.sessionKey);break;case"all-others":(async()=>{try{D(!0);const e=await j.Http.post("/users/sessions/logout-all-others/"),t=e.data.count||0;V(e.data.message||"Logged out from ".concat(t," other device(s)"),"success"),await K(),U()}catch(r){var e,t;console.error("Error logging out from other devices:",r),401!==(null===(e=r.response)||void 0===e?void 0:e.status)&&V((null===(t=r.response)||void 0===t||null===(t=t.data)||void 0===t?void 0:t.message)||"Failed to logout from other devices. Please try again.","error")}finally{D(!1)}})();break;case"all":(async()=>{try{D(!0),await j.Http.post("/users/sessions/logout-all/"),t((0,C.Jg)()),t((0,k.yx)()),t((0,S.$1)()),document.cookie="sessionid=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",e("/login",{state:{message:"You have been logged out from all devices"}})}catch(e){var r,o;console.error("Error logging out from all devices:",e),401!==(null===(r=e.response)||void 0===r?void 0:r.status)&&V((null===(o=e.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.message)||"Failed to logout from all devices. Please try again.","error"),D(!1)}})();break;default:U()}},variant:"contained",disabled:null!==z||G,sx:{textTransform:"none",backgroundColor:"error"===X.confirmColor?"#FF6B6B":"#FFA726","&:hover":{backgroundColor:"error"===X.confirmColor?"#FF5252":"#FF9800"}}},null!==z||G?"Processing...":X.confirmLabel))),o.createElement(p.A,{open:N.open,autoHideDuration:4e3,onClose:Q,anchorOrigin:{vertical:"top",horizontal:"center"}},o.createElement(h.A,{onClose:Q,severity:N.severity,sx:{width:"100%"}},N.message)))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.