PageSourceSearch

https://membean.com/assets/packs/js/login-fa1e23b733b30143fc3f.js

js membean.com collected 2026-10-01 12:14:38 UTC 20,986 bytes, 2 lines download raw bytes

1"use strict";(globalThis.webpackChunkapp=globalThis.webpackChunkapp||[]).push([[966],{62555(e,t,a){a.d(t,{A:()=>l});var n=a(96540),r=a(36629);const l=()=>n.createElement(r.A,{className:"card-loader",name:"loader-card",role:"progressbar"})},52126(e,t,a){a.d(t,{A:()=>i});var n=a(96540),r=a(5556),l=a.n(r),s=a(62555);class o extends n.Component{static propTypes=(()=>({children:l().node,className:l().string,dataTestid:l().string,direction:l().string,footerAction:l().node,label:l().string,primaryAction:l().node,title:l().node,type:l().string}))();render(){const{children:e,className:t,dataTestid:a="card",direction:r="vertical",footerAction:l,label:o,primaryAction:i,title:c,type:m}=this.props;let d=["card"];return t&&d.push(t),m&&d.push(m),n.createElement("section",{"data-testid":a,className:d.join(" ")},c||i?n.createElement("div",{className:"card-header"},n.createElement("h2",{className:"title","aria-label":o},c),i):null,n.createElement("div",{className:`card-content ${r}`},e||n.createElement(s.A,null),l&&n.createElement("div",{className:"card-footer"},l)))}}const i=o},36405(e,t,a){a.d(t,{A:()=>l});var n=a(96540),r=a(86814);const l=e=>{const{flashAlerts:t,setFlashAlerts:a}=e;(0,n.useEffect)(()=>{if(window.__ALERTS__=null,t){const e=document.getElementById("top"),t=document.getElementById("hydrate-alerts");t&&e.removeChild(t)}},[t]);const l=e=>{a(t.filter(t=>t!==e))};return t.length?n.createElement("div",null,t.map((e,t)=>n.createElement(r.A,{alert:e,key:`flash-alert$-${t}`,dismissCallback:l}))):null}},62728(e,t,a){a.d(t,{A:()=>m});var n=a(96540),r=a(5556),l=a.n(r),s=a(62555),o=a(36629);function i(e){return n.createElement("div",{className:"row"},n.createElement("div",{className:"small-12 columns text-center"},n.createElement("button",{className:"btn btn-full-mobile-only btn-blue btn-icon-left close-memlet-btn",onClick:e.backAction},n.createElement(o.A,{name:"arrow-left"}),"Back")))}i.propTypes={backAction:l().func.isRequired};var c=a(76213);function m(e){const{title:t,children:a,className:r,goBack:l,helpUrl:m,subTitle:d,render:u}=e,g=(0,c.Zp)(),h=()=>l?l():g(-1),p=(0,n.useRef)(null);return(0,n.useEffect)(()=>{p?.current&&p.current.focus()},[]),n.createElement("div",{"data-testid":"fullscreen-card",className:"fullscreen-card"},n.createElement("div",{className:"row"},n.createElement("div",{className:"columns extra-small-12 medium-12"},n.createElement("div",{className:"fullscreen-card-header"},n.createElement("div",{className:"fullscreen-card-sub-header"},n.createElement("strong",{dangerouslySetInnerHTML:{__html:d}})),n.createElement("div",{className:"fullscreen-card-title"},n.createElement("h1",{ref:p,tabIndex:"-1"},t)),n.createElement("div",{className:"fullscreen-card-actions"},m&&n.createElement("a",{"aria-label":`Learn more about ${t}`,href:m,className:"action",target:"_blank",rel:"noopener noreferrer"},n.createElement(o.A,{name:"help"})),n.createElement("button",{className:"action",id:"fullscreen-card-close-button","aria-label":`Close ${t}`,onClick:h},n.createElement(o.A,{name:"close"}))))),n.createElement("div",{className:"columns extra-small-12 medium-12"},u?u():n.createElement("main",{className:"card fullscreen"+(r?" "+r:"")},n.createElement("div",{className:"card-content"},a||n.createElement(s.A,null)))),n.createElement("div",{className:"columns extra-small-12 medium-12"},n.createElement(i,{backAction:h}))))}m.propTypes={title:l().string,footerAction:l().node,children:l().node,className:l().string,goBack:l().func,subTitle:l().string,render:l().func}},2503(e,t,a){function n(){var e;return!((e=navigator.userAgent).indexOf("MSIE ")>-1||e.indexOf("Trident/")>-1)&&function(e){var t=e.createElement("b"),a="flex",n="-webkit-"+a;try{return t.style.display=n,t.style.display=a,t.style.display===a||t.style.display===n}catch(r){return!1}}(document)&&!!String.prototype.includes}function r(){var e=document.createElement("div");e.className="browser-warning",e.innerHTML='\n    <h1>This browser (or configuration) doesn&#8217;t support Membean</h1>\n    <p>\n      We built Membean to work with modern browsers so it&#8217;s fast and\n      secure. Unfortunately, your browser isn&#8217;t currently compatible.\n      Please try the following:\n    </p>\n    <ul>\n      <li>Ensure that you have JavaScript enabled.</li>\n      <li>Ensure that you have cookies enabled.</li>\n      <li>Switch to one of these fine browsers and you&#8217;ll be on your way!</li>\n    </ul>\n    <ul class="browser-list list-inline">\n      <li class="safari">\n        <a href="https://support.apple.com/downloads/safari">
1\n          <img src="https://cdn0.membean.com/public/cdnimages/safari.gif" alt="Safari Logo" />\n          <span>Apple </span>Safari\n        </a>\n      </li>\n      <li v="chrome">\n        <a href="https://www.google.com/chrome/">\n          <img src="https://cdn0.membean.com/public/cdnimages/chrome.gif" alt="Chrome Logo" />\n          <span>Google </span>Chrome\n        </a>\n      </li>\n      <li v="edge">\n        <a href="https://www.microsoft.com/windows/microsoft-edge">\n          <img src="https://cdn0.membean.com/public/cdnimages/edge.gif" alt="Edge Logo" />\n          <span>Microsoft </span>Edge\n        </a>\n      </li>\n      <li class="firefox">\n        <a href="https://www.mozilla.org/firefox/">\n          <img src="https://cdn0.membean.com/public/cdnimages/firefox.gif" alt="Firefox Logo" />\n          <span>Mozilla </span>Firefox\n        </a>\n      </li>\n    </ul>\n  ',document.getElementById("react").appendChild(e)}a.d(t,{A:()=>n,r:()=>r})},48955(e,t,a){var n=a(96540),r=a(5338),l=a(76213),s=a(54335),o=a(18082),i=a(70732);const c=e=>{const t=document.createElement("form");t.action=e,t.method="POST";const a=document.createElement("input");a.setAttribute("type","hidden"),a.setAttribute("name","authenticity_token"),a.setAttribute("value",(0,i.A)()),t.appendChild(a),document.body.appendChild(t),t.submit()};var m=a(45495),d=a(7425),u=a(36629);const g=/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/,h=e=>{const t={};var a;return(e=>e&&e.length>0)(e.username)||(t.username="Please enter your email or username."),(a=e.password)&&a.length>0||(t.password="Please enter your password."),t},p=e=>{const t={};return(e=>{const t=e.toLowerCase();return t&&t.length>0&&g.test(t)})(e.email)||(t.email="Please enter a valid email address."),t},E=()=>{const[e,t]=(0,n.useState)({loading:!1,errors:""}),[a,r]=(0,n.useState)(!1),[l,i]=(0,n.useState)(null),[c,g]=(0,n.useState)(""),[p,E]=(0,n.useState)(0),{loading:b}=e;return(0,n.useEffect)(()=>{c&&E(e=>e+1)},[c]),n.createElement(d.l1,{initialValues:{username:"",password:"",rememberMe:!1},onSubmit:a=>{return t({...e,loading:!0}),n=a,r=a=>{t({...e,loading:!1,errors:a,success:!1})},(0,s.A)("/login",{body:JSON.stringify({user:{username:n.username.trim(),password:n.password,remember_me:n.rememberMe}}),headers:(0,o.A)(),method:"POST"}).then(e=>e.json()).then(e=>{const t=e.payload||e;if(t&&t.errors)return r(t.errors)}).catch(e=>{r(e&&e.message)});var n,r},validate:h,validateOnBlur:!0,validateOnChange:!0},t=>{const{values:s,errors:o,touched:h,handleBlur:E,handleChange:f,dirty:v,isValid:y,isSubmitting:w}=t,N=!v||!y||w;return n.createElement(d.lV,{id:"login"},n.createElement("div",{className:"control-with-help"},n.createElement(m.ks,{id:"username",label:"Email or Username",name:"username",value:s.username,onBlur:E,onChange:f,onFocus:()=>i("username"),isValid:h.username&&!o.username,feedbackText:h.username&&o.username?`${o.username}\u200b`:"",autoComplete:"email",required:!0,polite:!1,isFocused:"username"===l})),n.createElement("div",{className:"control-with-help control-with-checkbox"},n.createElement(m.ks,{id:"password",label:"Password",name:"password",type:a?"text":"password",value:s.password,onBlur:E,onChange:f,onFocus:()=>i("password"),isValid:h.password&&!o.password,feedbackText:h.password&&o.password?`${o.password}\u200b`:"",autoComplete:"current-password",required:!0,polite:!1,isFocused:"password"===l}),n.createElement("div",{className:"show-password"},n.createElement(m.WM,{id:"showPassword",label:"Show password",name:"showPassword",onChange:()=>{r(!a)},removeFromTabOrder:!0,value:a}))),n.createElement("div",{className:"alert alert-inline alert-error",hidden:!e.errors,role:"alert","aria-live":"assertive"},e.errors&&n.createElement("p",{dangerouslySetInnerHTML:{__html:e.errors}})),n.createElement("div",{className:"centered-controls"},n.createElement("button",{className:"btn-call-to-action btn btn-blue btn-full-mobile-only btn-icon-right",type:"submit","aria-label":"Sign In","aria-disabled":N,"aria-describedby":"sr-status",onClick:e=>{N&&e.preventDefault()},onFocus:()=>
1{N&&(g(""),setTimeout(()=>{g("Sign In button is disabled because either the username or password is missing or invalid.")},10))},onBlur:()=>{g("")}},b?"Signing In":"Sign In",n.createElement(u.A,{name:"caret-right"})),n.createElement("div",{className:"show-for-sr",role:"alert","aria-live":"assertive","aria-atomic":"true",id:"sr-status"},n.createElement("span",{key:p},c))),n.createElement("div",{className:"centered-controls"},n.createElement(m.WM,{classes:"remember-me-control",id:"rememberMe",label:"Keep me signed in",name:"rememberMe",onChange:f,value:s.rememberMe})),n.createElement("div",{className:"help-controls"},n.createElement("div",{className:"help-link"},n.createElement(m.m_,{id:"forgot-login-tooltip",text:"Forgot username?",tooltipBody:'If you use Membean at school, your username looks like "firstname_lastname_schoolcode". Ask your teacher for help.'})),"\xb7",n.createElement("div",{className:"help-link"},n.createElement("a",{href:"/forgot_password"},"Forgot password?"))))})};var b=a(5556),f=a.n(b);const v={google:a.p+"static/framework/images/sso-logo-google-900bd55e2bcdf8a1cb70.svg",microsoft:a.p+"static/framework/images/sso-logo-microsoft-51d35d85195891817a21.svg"},y=e=>{const{provider:t,text:a}=e,r=v[t]||null,[l,o]=(0,n.useState)("");return n.createElement(n.Fragment,null,n.createElement("a",{href:"#",onClick:e=>{var t,a;e.preventDefault(),t=()=>o(""),a=e=>o(e),(0,s.A)("/google_oauth_signin").then(e=>e.json()).then(e=>{const n=e.payload||e;if(n&&n.errors)return a(n.errors);t(),c(e.authorize_url)}).catch(e=>a(e&&e.message))},className:`sso-login-btn sso-login-btn-${t} ${l?"margin-bottom":""}`,"aria-label":a,"data-testid":"sso-login-link","aria-describedby":"google-login-note"},n.createElement("p",{id:"google-login-note",className:"show-for-sr"},"This link may not navigate depending on your login status. It may instead show an error or message on this page."),n.createElement("div",{className:"sso-login-btn-icon"},n.createElement("img",{alt:`${t} logo`,src:r})),a),l&&n.createElement("div",{className:"alert alert-inline alert-error",hidden:!l,role:"alert","aria-live":"assertive"},n.createElement("p",{dangerouslySetInnerHTML:{__html:l}})))};y.propTypes={provider:f().string.isRequired,text:f().string.isRequired};const w=()=>n.createElement("section",{className:"sso-login","data-testid":"sso-login-section"},n.createElement("ul",null,n.createElement("li",null,n.createElement(y,{provider:"google",text:"Sign In with Google"})),n.createElement("li",null,n.createElement("a",{href:"/saml_signin",className:"btn btn-white btn-small"},"Sign In with SAML"))),n.createElement("p",null,"Not sure if your school has enabled single sign-on for Membean? Ask your teacher."));function N(e){const{heading:t,children:a}=e;return n.createElement(n.Fragment,null,n.createElement("div",{className:"minimal-card-container"},n.createElement("div",{className:"minimal-card"},n.createElement("div",{className:"minimal-card-title"},n.createElement("a",{"aria-label":"Back to Membean home page",href:"/"},n.createElement(u.A,{name:"logo",ariaLabel:"Membean Wordmark"}))),n.createElement("main",{className:"minimal-card-content",id:"content"},n.createElement("h1",{tabIndex:"-1"},t),a))),n.createElement("footer",{className:"minimal-card-footer",id:"footer"},n.createElement("ul",{className:"list list-inline"},n.createElement("li",null,n.createElement("a",{href:"//support.membean.com",rel:"noopener noreferrer",target:"_blank"},"Support")),n.createElement("li",null,n.createElement("a",{href:"/agreement",rel:"noopener noreferrer",target:"_blank"},"Terms of Use")),n.createElement("li",null,n.createElement("a",{href:"/privacy",rel:"noopener noreferrer",target:"_blank"},"Privacy Policy")))))}N.propTypes={heading:f().string,logo:f().node,children:f().node};var k=a(59820);const A=e=>{const t=(0,l.zy)(),a=(0,l.Zp)();return(0,n.useEffect)(()=>{document.title="Membean Login and Sign in"},[]),(0,n.useEffect)(()=>{const n=new URLSearchParams(t.search);if(n.has("alert")){"unauthorized"===n.get("alert")&&e.updateFlashAlerts({title:"Unauthorized",description:"Please sign in again.",dismissable:!0,type:"error"}),n.delete("alert"),a({search:n.toString()},{replace:!0})}},[]),n.createElement(n.Fragment,null,n.createElement(k.A,null),n.createElement(N,{heading:"Please sign in to continue"},n.createElement(E,null),n.createElement(w,null)))};var S=a(46942),_=a.n(S),M=a(25858),T=a.n(M);const C=e=>{const{handleForgotEmail:t}
1=e,[a,r]=(0,n.useState)({loading:!1,errors:"",successMessage:""}),[i,c]=(0,n.useState)(null),{loading:g}=a,[h,E]=(0,n.useState)(""),[b,f]=(0,n.useState)(0);(0,n.useEffect)(()=>{document.title="Membean Forgot Password Screen"},[]);const v=(0,n.useCallback)(T()((e,t)=>{var a,n,l;r(e=>({...e,loading:!0})),a=e,n=e=>t({loading:!1,errors:"",successMessage:e}),l=(e,a)=>{401===a&&location.reload(),setTimeout(()=>{t({errors:""})},15e3),t({loading:!1,errors:e,successMessage:""})},(0,s.A)("/users/password",{body:JSON.stringify({user:{email:a.email.trim()}}),headers:(0,o.A)(),method:"POST"}).then(e=>204===e.status?n("Please check your email for instructions."):e.json().then(e=>{const t=e.payload||e;if(t&&t.errors)return l(t.errors)})).catch(e=>{l(e?.message,e?.status)})},500),[]);return(0,n.useEffect)(()=>()=>{v.cancel()},[]),n.createElement(d.l1,{initialValues:{email:""},onSubmit:(e,{setSubmitting:t})=>{r(e=>({...e,loading:!0})),v(e,e=>{r(t=>({...t,...e})),t(!1)}),t(!0),setTimeout(()=>{t(!1)},500)},validate:p,validateOnBlur:!0,validateOnChange:!0},e=>{const{values:r,errors:s,touched:o,handleBlur:p,handleChange:v,dirty:y,isValid:w}=e;return n.createElement(d.lV,{id:"forgot-password"},n.createElement("div",{className:"control-with-help"},n.createElement(m.ks,{feedbackContext:"error",feedbackText:o.email&&s.email&&"email"===i?`${s.email}\u200b`:"",id:"email",isValid:o.email&&!s.email,label:"Email Address",name:"email",onBlur:p,onFocus:()=>c("email"),onChange:v,onClick:e=>{y&&w&&!g||e.preventDefault()},type:"email",autoComplete:"email",value:r.email,autoFocus:!0,required:!0,polite:!1,isFocused:"email"===i})),n.createElement("div",{className:_()("alert alert-inline",{"alert-error":a.errors,"alert-success":a.successMessage}),hidden:!a.errors&&!a.successMessage,role:"alert","aria-live":"assertive"},n.createElement("p",{dangerouslySetInnerHTML:{__html:a.errors||a.successMessage}})),n.createElement("div",{className:"centered-controls"},n.createElement("button",{className:"btn-call-to-action btn btn-blue btn-full-mobile-only btn-icon-right","aria-disabled":!y||!w||g,type:"submit","aria-label":"Send","aria-describedby":"sr-status",onFocus:()=>{y&&w&&!g||(E(""),setTimeout(()=>{E("Send button is disabled because the email is missing or invalid."),f(e=>e+1)},10))},onBlur:()=>{E("")}},g?"Sending...":"Send",n.createElement(u.A,{name:"caret-right"})),n.createElement("div",{className:"show-for-sr",role:"alert","aria-live":"assertive","aria-atomic":"true",id:"sr-status"},n.createElement("span",{key:b},h))),n.createElement("ul",{className:"help-controls forgot-password-controls"},n.createElement("li",{className:"help-link return-to-login-link"},n.createElement(l.N_,{to:"/login"},n.createElement(u.A,{name:"caret-left"})," Return to login")),n.createElement("li",{className:"help-link"},n.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),t()}},"Forgot email?"))))})};var F=a(62728),x=a(52126);const I=e=>{const{goBack:t}=e;return n.createElement("div",{className:"fullscreen-card"},n.createElement(F.A,{title:"Forgot your email?",goBack:t,render:()=>n.createElement(x.A,null,n.createElement("h2",null,"I use Membean at school."),n.createElement("p",null,"If you use Membean at school and you are having trouble signing in, please contact your teacher. They can easily reset your password for you. Otherwise, feel free to contact"," ",n.createElement("a",{href:"mailto:[email protected]"},"Membean Support")," with your full name and school, and we'll be happy to help you."),n.createElement("br",null),n.createElement("h2",null,"I do not use Membean at school."),n.createElement("p",null,"Please contact"," ",n.createElement("a",{href:"mailto:[email protected]"},"Membean Support")," with your full name and username, and we'll be happy to help you with resetting your password."))}))};I.propTypes={goBack:f().func.isRequired};const B=I,L=()=>{const[e,t]=(0,n.useState)(!0),a=a=>(a&&a.preventDefault(),t(!e)),r=n.createElement(N,{heading:"Forgot your password?",logo:n.createElement(u.A,{name:"logo"})},n.createElement("p",null,"It happens to the best of us. Enter your email below, and we'll send you instructions to reset your password."),n.createElement(C,{handleForgotEmail:a}));return n.createElement(n.Fragment,null,n.createElement(k.A,null),e?r:n.createElement(B,{goBack:a}))};var O=a(36405);const P=()=>
1{const[e,t]=(0,n.useState)({loading:!1,errors:"",successMessage:""}),[a,r]=(0,n.useState)(null),{loading:i}=e;return n.createElement(d.l1,{initialValues:{email:""},onSubmit:a=>{return t({...e,loading:!0}),n=a,r=(a,n)=>{401===n&&location.reload(),setTimeout(()=>{t({...e,errors:""})},15e3),t({...e,loading:!1,errors:a,successMessage:""})},(0,s.A)("/saml_signin",{body:JSON.stringify({email:n.email.trim()}),headers:(0,o.A)(),method:"POST"}).then(e=>e.json()).then(e=>{const t=e.payload||e;return t&&t.errors?r(t.errors):(0,s.A)(t.goto).then(e=>e.json()).then(e=>c(e.authorize_url))}).catch(e=>{r(e&&e.message)});var n,r},validate:p,validateOnBlur:!1,validateOnChange:!0},t=>{const{values:s,errors:o,touched:c,handleBlur:g,handleChange:h,dirty:p,isValid:E}=t;return n.createElement(d.lV,{id:"saml-login"},n.createElement("div",{className:"control-with-help"},n.createElement(m.ks,{feedbackContext:"error",feedbackText:c.email&&o.email&&"email"===a?`${o.email}\u200b`:"",id:"email",type:"email",autoComplete:"email",isValid:c.email&&!o.email,label:"Email Address",name:"email",onBlur:g,onFocus:()=>r("email"),onChange:h,value:s.email,autoFocus:!0,isFocused:"email"===a,polite:!1})),n.createElement("div",{className:_()("alert alert-inline",{"alert-error":e.errors,"alert-success":e.successMessage}),hidden:!e.errors&&!e.successMessage,role:"alert","aria-live":"assertive"},n.createElement("p",{dangerouslySetInnerHTML:{__html:e.errors||e.successMessage}})),n.createElement("div",{className:"centered-controls"},n.createElement("button",{className:"btn-call-to-action btn btn-blue btn-full-mobile-only btn-icon-right",disabled:!p||!E,type:"submit","aria-label":"Send"},i?"Signing In...":"Sign In",n.createElement(u.A,{name:"caret-right"}))),n.createElement("div",{className:_()("help-controls","forgot-password-controls")},n.createElement("div",{className:"help-link"},n.createElement("div",{className:"return-to-login-link"},n.createElement(l.N_,{to:"/login"},n.createElement(u.A,{name:"caret-left"})," Return to login")))))})},$=()=>n.createElement(n.Fragment,null,n.createElement(k.A,null),n.createElement(N,{heading:"Sign In with SAML",logo:n.createElement(u.A,{name:"logo"})},n.createElement("p",null,"Enter your email below to sign in using your school's SAML provider."),n.createElement(P,null)));var z=a(54667);const V=()=>{const[e,t]=(0,n.useState)(window.__ALERTS__||[]);return n.createElement(l.Kd,null,n.createElement(O.A,{flashAlerts:e,setFlashAlerts:t}),n.createElement(z.A,null),n.createElement(l.BV,null,n.createElement(l.qh,{path:"login",element:n.createElement(A,{updateFlashAlerts:a=>t([...e,a])})}),n.createElement(l.qh,{path:"forgot_password",element:n.createElement(L,null)}),n.createElement(l.qh,{path:"saml_signin",element:n.createElement($,null)})))};var q=a(2503);const R=(e,t,a)=>{if(a){const n=new Date;n.setTime(n.getTime()+24*a*60*60*1e3),document.cookie=`${e}=${t}; expires=${n.toGMTString()}; path=/`}else document.cookie=`${e}=${t}; path=/`};var H=a(98011);if((0,q.A)()&&(()=>{if(navigator.cookieEnabled)return!0;R("mb_is_cookie_enabled","1");const e=-1!==document.cookie.indexOf("mb_is_cookie_enabled");return R("mb_is_cookie_enabled",""),e})()){const e=!0;window.isProd=e;const t=document.getElementById("react");(0,r.H)(t).render(n.createElement(H.A,{packName:"login"},n.createElement(V,null)))}else(0,q.r)()}},e=>{e.O(0,[118,872,2,95],()=>{return t=48955,e(e.s=t);var t});e.O()}]);
2//# sourceMappingURL=login-fa1e23b733b30143fc3f.js.map

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.