CINXE.COM

Rubric :: Get Started

<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui"> <meta name="description" content="Rubric Student Portal"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta property="og:image" content="https://admin.hellorubric.com/assets/uploadedimgs/926184cb6bedc0650354a55c8c50f412.png"> <meta name="author" content="Rubric"> <title>Rubric :: Get Started</title> <link rel="apple-touch-icon" href="https://admin.hellorubric.com/assets/uploadedimgs/ec67d74a92072b9d12916c84e1ef8012.png"> <link rel="shortcut icon" type="image/x-icon" href="https://admin.hellorubric.com/assets/uploadedimgs/ec67d74a92072b9d12916c84e1ef8012.png"> <!--Core CSS --> <link rel="stylesheet" href="https://cachedresources.hellorubric.com/joint_assets/css/app.css"> <link rel="stylesheet" href="https://cachedresources.hellorubric.com/joint_assets/css/main.css"> <!-- Fonts --> <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700;800;900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,700" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/intl-tel-input@16.0.2/build/css/intlTelInput.css"> <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet"/> </head> <style> .iti { width: 100%; } .modern-login .is-form .login-wrapper .button-wrap .button { margin-left: 0 !important; } /* SEARCH BAR CSS */ .search-bar { width: 100%; background: white; /*height: 70px;*/ border-radius: 100vw; display: flex; justify-content: center; transition: 300ms ease; font-size: 0.6rem; box-shadow: 2px 2px 12px 3px #0a0a0a87 !important; } .search-bar .search-university { padding: 1rem 1.5rem; text-align: left; font-size: 11px; flex: 20; transition: background 250ms ease; } .search-bar .search-country { flex: 15; text-align: left; font-size: 11px; cursor: pointer; border-radius: 100px 0px 0px 100px; padding: 1rem 1.5rem; transition: background 250ms ease; } .search-bar .search-text { flex: 30; text-align: left; font-size: 11px; border-radius: 0px 100px 100px 0px; padding: 1rem 1.5rem; transition: background 250ms ease; } .search-bar .search-university:hover { /*background: hsl(0 0% 94%);*/ cursor: pointer; } .search-bar .search-country:hover { background: hsl(0 0% 94%); cursor: pointer; } .search-bar .search-text:hover { background: hsl(0 0% 94%); } .search-bar>div { position: relative; } .search-bar>div::before { position: absolute; content: ""; left: 0; top: 50%; transform: translateY(-50%); width: 1px; height: 55%; background: hsl(0 0% 90%); } .search-bar>div:nth-of-type(1)::before { background: transparent; } .search-bar>div:hover::before { background: transparent; } .search-university>input { width: 100%; background: none; color: #000; font-size: 20px; border: none } body { background: white !important; } .iti__country-list { z-index: 100; } .select2-container { width: 100% !important; } .select2-results__option { color: #333; } .cancel.is-white:hover, .button.is-white.is-hovered { background-color: transparent !important; } </style> <body> <div id="huro-app" class="app-wrapper"> <!-- SELECT UNIVERSITY MODAL --> <div id="select-university-modal" class="modal h-modal"> <div class="modal-background h-modal-close" onClick="$('#select-university-modal').removeClass('is-active')"> </div> <div class="modal-content"> <div class="modal-card" style="border-radius: 10px;"> <div class="modal-card-body no-padding-all no-margin-all has-slimscroll"> <div style="display:flex; margin-top:6px;border-bottom: solid 1px #1d1d1d2b"> <div class="field" style="flex:10"> <div class="control has-icon"> <input id="search-university-input" type="text" class="input search-input" placeholder="Search University..."> <div class="form-icon"> <i data-feather="search"></i> </div> </div> </div> <button id="search-university-input-clear" class="button is-elevated m-r-5" aria-label="close" style="margin-top:2px;display:none"> Clear </button> <button class="button is-circle is-elevated h-modal-close m-r-10" onClick="$('#select-university-modal').removeClass('is-active')" aria-label="close" style="margin-top:2px"> <span class="icon is-large"> <i style="height:20px; width:20px" data-feather="x"></i> </span> </button> </div> <div class="placeholder-content is-hidden" id="search-university-empty-state" style="text-align:center; padding:20px"> <h3 class="title is-6">No results found for "<span id="searched-university"></span>"</h3> </div> <div style="max-height:450px;overflow: auto;" class="has-slimscroll"> <table class="table is-hoverable is-fullwidth"> <tbody id="insert-universities"> <tr id="select-university-template" class="is-hidden" style="cursor: pointer"> <td class="is-media"> <div class="h-avatar is-small"> <img id="select-university-template-logo" class="avatar" src="" loading="lazy"> </div> </td> <td> <div id="select-university-template-name"></div> <p id="select-university-template-code"></p> </td> <td class="is-end" style="text-align:right"> <span class="icon is-large"> <i style="height:20px; width:20px" data-feather="arrow-right"></i> </span> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <!--Full pageloader--> <!-- Pageloader --> <div class="pageloader is-full"></div> <div class="infraloader is-full is-active"></div> <div class="auth-wrapper"> <!--Page body--> <div class="modern-login"> <div class="underlay h-hidden-mobile h-hidden-tablet-p makewidth"></div> <div class="columns is-gapless is-vcentered dosomethingweird"> <div class="column is-relative is-8 h-hidden-mobile h-hidden-tablet-p hideiframe"> <div class="hero is-fullheight is-image"> <div class="hero-body"> <div class="container"> <div class="columns"> <div class="column"> <img class="hero-image" src="https://getqpay.com/wp-content/uploads/2022/05/society_landing_page_1-1024x826.png" alt=""> </div> </div> </div> </div> </div> </div> <div class="column addweirdpadding is-relative"> <a class="top-logo" href="#"> <img class="light-image" style=" max-width: 90px;" src="https://admin.hellorubric.com/assets/uploadedimgs/37d21e001d3191224b48750bd32947df.png" alt=""> <img class="dark-image" style=" max-width: 90px;" src="https://admin.hellorubric.com/assets/uploadedimgs/37d21e001d3191224b48750bd32947df.png" alt=""> </a> <label class="dark-mode ml-auto d-none"> <input type="checkbox" checked> <span></span> </label> <div class="is-form"> <div class="hero-body"> <div class="form-text"> <h2 style="font-size: 24px;">Welcome to Rubric 馃憢</h2> <h2 style="font-size: 14px;">Campus Student Portal</h2> <p class="letsgetstartedtext">Let's get started - select your university from the list below!</p> </div> <form class="login-wrapper"> <div class="search-bar"> <div class="search-university" style="text-align:left;"> <input readonly style=" text-align: center;cursor: pointer; text-overflow:ellipsis" type="text" placeholder="Select University"> </div> </div> <div class="universities-select-select2-parent is-hidden"> <select id="universitiesSelect" class="is-hidden" disabled="true" style="width: 50%;"><option></option></select> </div> <div class="sso is-hidden"> <div class="has-help" style="margin-bottom:20px; margin-top:20px; margin-left:auto; flex-direction: column; display: flex; justify-content: center; align-items: center;"> <button type="button" onclick="getSSOCredentials()" class="button h-button is-big is-rounded is-primary is-bold is-centre is-raised" style="color:#FFF">Sign In with Your University Account </button> <label class="checkbox" style="color: #999 !important;"> <input type="checkbox" id="sso-terms"> <span></span> Accept the <a href="https://hellorubric.com/terms" target="_blank">terms of use</a>* </label> <div class=" message is-warning d-none" style=" margin-top: 20px;"> <div class="message-body" id="errormessage-sso"> </div> </div> </div> <div class="is-divider is-hidden" data-content="OR"></div> </div> <div class="regular is-hidden"> <div class="control registerholder d-none"> <input type="text" class="input" name="fullname" placeholder="Full Name" id="fullname" autocomplete="name"> <div class="auth-label">Full name *</div> <div class="auth-icon"> <i class="lnil lnil-user"></i> </div> </div> <div class="control emailholder"> <input type="email" class="input" name="email" placeholder="email@emailaddress.com" id="email" autocomplete="email"> <div class="auth-label">Email Address *</div> <div class="auth-icon"> <i class="lnil lnil-envelope"></i> </div> </div> <div class="control TFA_input is-hidden"> <input class="input" id="TFA_code"> <div class="auth-label">Two Factor Authentication Code*</div> <div class="auth-icon"> <i class="lnil lnil-lock"></i> </div> <p style="font-size: 11px; margin-top: 4px" >To ensure security, a one time code was sent to your email <span class="masked-email"></span></p> </div> <div class="control mobileholder d-none registerholder"> <input type="tel" name="phone" class="input" placeholder="" id="mobile" autocomplete="tel"> <div class="auth-label">Mobile Number</div> </div> <div class="control passwordholder d-none registerholder"> <input type="password" class="input" id="password"> <div class="auth-label">Password *</div> <div class="auth-icon"> <i class="lnil lnil-lock-alt"></i> </div> <p style="font-size: 11px; margin-top: 4px">Min 7 alphanumeric Characters </p> </div> <div class="control recaptcha d-none registerholder" style=" text-align: center;"> <div class="g-recaptcha" data-sitekey="6LcTWrElAAAAAKw9lioIkfLHgXvNt0d1ZLdjl5mN" style="display: inline-block;"></div> </div> <div class="control d-none registerholder" style=" text-align: center;"> <label class="checkbox" style="color: #999 !important;"> <input type="checkbox" id="terms"> <span></span> Accept the <a href="https://hellorubric.com/terms" target="_blank">terms of use</a>* </label> </div> <div class="control loginviamobile hide-on-register" style=" text-align: center;"> <a class="loginviamobile hide-on-register" href="#" style="text-align:right">Use mobile number instead?</a> </div> <div class="control loginviaemail d-none hide-on-register" style=" text-align: center;"> <a class="loginviaemail hide-on-register" href="#" style="text-align:right">Use email instead?</a> </div> <div class="control hide-on-register d-none forgotholder"> <label class="remember-toggle d-none"> <input type="checkbox"> <span class="toggler"> <span class="active"> <i data-feather="check"></i> </span> <span class="inactive"> <i data-feather="circle"></i> </span> </span> </label> <div class="remember-me d-none">Remember Me</div> <a id="forgot-link"> Forgot Password?</a> </div> <div class=" message is-warning d-none" style=" margin-top: 20px;"> <div class="message-body" id="errormessage"> </div> </div> <div class="button-wrap has-help" style="margin-bottom:0px; margin-top:20px; flex-direction: column;"> <button id="getstarted" type="button" class="button h-button is-big is-rounded is-primary is-bold is-raised" style="color:#FFF">Continue 馃憠 </button> <button id="startover" type="button" class="button h-button is-big is-rounded is-lower d-none cancel" style="border-color:transparent; background:transparent;">Cancel </button> </div> <p style="margin-top:20px;text-align:center;" class="d-none">Don't have an account? <strong><a id="registerRedirect" href="https://campus.hellorubric.com/register"> Register Here</a></strong> </p> </div> <!-- center the following div--> <div class="is-hidden back-button" style="text-align: center; padding-top: 10px"> <a onclick="back()">Back</a> </div> </form> <form id="recover-form" class="login-wrapper is-hidden"> <p class="recover-text" style="color: #999;">To reset your password, provide your email address to verify account ownership</p> <div class="control"> <input type="text" class="input" id="resetemailaddress"> <div class="auth-label">Email Address</div> <div class="auth-icon"> <i class="lnil lnil-envelope"></i> </div> </div> <div class="message is-warning d-none" style=" margin-top: 20px;"> <div class="message-body" id="errormessagereset"> </div> </div> <div class="button-wrap" style=" text-align: center;"> <button id="cancel-recover" type="button" class="button h-button is-big is-rounded is-lower" style="border-color:transparent; background:transparent">Cancel </button> <button type="button" id="sendemailcode" class="button h-button is-big is-rounded is-primary is-bold is-raised" style="color:white;">Confirm </button> </div> </form> <form id="verification-holder" class="login-wrapper is-hidden d-none"> <p class="recover-text" style="color: #999;">Please provide the verification code that was just sent to you</p> <div class="control"> <input type="text" class="input" id="verification-register"> <div class="auth-label">Verification code</div> <div class="auth-icon"> <i class="lnil lnil-shield"></i> </div> </div> <div class="message is-warning d-none" style=" margin-top: 20px;"> <div class="message-body" id="errormessageregister"> </div> </div> <div class="button-wrap" style=" text-align: center;"> <button type="button" id="submitregister" class="button h-button is-big is-rounded is-primary is-bold is-raised"> Verify </button> </div> </form> <form id="recover-form-2" class="login-wrapper is-hidden d-none"> <p class="recover-text" style="color: #999;">Please provide the verification code that was just sent to you with, and a new password</p> <div class="control"> <input type="text" class="input" id="verification"> <div class="auth-label">Verification code</div> <div class="auth-icon"> <i class="lnil lnil-shield"></i> </div> </div> <div class="control"> <input type="password" class="input" id="newpassword"> <div class="auth-label">Password</div> <div class="auth-icon"> <i class="lnil lnil-lock-alt"></i> </div> </div> <div class="message is-warning d-none" style=" margin-top: 20px;"> <div class="message-body" id="errormessageresetfinal"> </div> </div> <div class="button-wrap" style=" text-align: center;"> <button type="button" id="submitresetpass" class="button h-button is-big is-rounded is-primary is-bold is-raised"> Submit </button> </div> </form> </div> </div> </div> </div> </div> </div> </div> <!--Huro Scripts--> <!-- Concatenated plugins --> <script src="https://cachedresources.hellorubric.com/joint_assets/js/app.js"></script> <script src="https://cachedresources.hellorubric.com/joint_assets/js/functions.js"></script> <script src="https://cachedresources.hellorubric.com/joint_assets/js/auth.js"></script> <!-- Huro js --> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha1/0.6.0/sha1.min.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.5/moment-timezone-with-data.min.js"> </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.blockUI/2.70/jquery.blockUI.min.js"></script> <!-- END PAGE LEVEL JS--> <script src="https://cdnjs.cloudflare.com/ajax/libs/jStorage/0.4.12/jstorage.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/intl-tel-input@16.0.2/build/js/intlTelInput.js"> </script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/intl-tel-input@16.0.2/build/js/utils.js"> </script> <script src="https://cdn.jsdelivr.net/npm/highlight.run"></script> <script type="text/javascript" src="https://resources.hellorubric.com/shared_resources/custom_merged.js?bpc=true"></script> <script> function stringToHex(input) { return input .split('') // Split the string into individual characters .map(char => char.charCodeAt(0).toString(16).padStart(2, '0')) // Convert to ASCII, then to hexadecimal .join(''); // Join the hexadecimal values } function hexToString(input) { return input .match(/.{1,2}/g) // Split the hex string into pairs of two characters .map(hex => String.fromCharCode(parseInt(hex, 16))) // Convert each hex pair to a character .join(''); // Join characters into a string } var micback=false; if (getUrlParameter("state")){ try { var content= hexToString(getUrlParameter("state")); if (content.toLowerCase().includes("micback")){ micback = true; } } catch (e){ } } // Check if 'code' parameter is absent and 'mic' parameter is present if (!new URLSearchParams(window.location.search).has('code') && new URLSearchParams(window.location.search).has('mic')) { $(".pageloader").addClass("is-active"); var urlParams = new URLSearchParams(window.location.search); var redirectUri = "https://campus.hellorubric.com/getstarted"; var clientId = 'ce0ebe2a-121b-4caa-9ad3-a16f25fbe996'; // Remove 'mic' parameter if it exists if (urlParams.has('mic')) { urlParams.delete('mic'); } urlParams.set("micback", true); // Filter out null or empty parameters for (const [key, value] of urlParams.entries()) { if (value === null || value === "" || value === "\x00") { urlParams.delete(key); // Remove the key if the value is null or empty } } // Convert remaining GET parameters into a URL-encoded string const queryString = stringToHex(urlParams.toString()); console.log(urlParams.toString()); console.log(queryString); // Define scope and construct the authorization URL const scope = 'User.Read openid profile email'; const authUrl = `https://login.microsoftonline.com/common/oauth2/v2.0/authorize` + `?client_id=${encodeURIComponent(clientId)}` + `&response_type=code` + `&redirect_uri=${encodeURIComponent(redirectUri)}` + `&response_mode=query` + `&prompt=select_account` + `&scope=${encodeURIComponent(scope)}` + `&state=${queryString}`; // Redirect to the authorization URL window.location.href = authUrl; } else if (new URLSearchParams(window.location.search).has('code') && micback){ console.log(hexToString(getUrlParameter("state"))); var insidearr = new Object; insidearr.code = getUrlParameter("code"); insidearr.state = hexToString(getUrlParameter("state")); $(".pageloader").addClass("is-active"); makeCall("registerOrLoginUserSSOMicrosoft", insidearr, 25000, false, function (dataparsed) { if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { afterlogin(dataparsed, dataparsed.redirect); $.jStorage.set("sessionid", dataparsed.sessionid); $.jStorage.setTTL("sessionid", 86400000 * 30); var state = hexToString(getUrlParameter("state")); var redirecturl = "/"; if (state.includes("r=")){ var r = state.split("r=")[1].split("&")[0]; redirecturl = "/" + decodeURIComponent(hex2String(r)).replace("/getstarted?r=", ""); } window.location.replace(redirecturl); } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $(".pageloader").removeClass("is-active"); alert(dataparsed.usererror); } }); // state=google_sso } else if (getUrlParameter("state") && getUrlParameter("state").includes("google_sso")){ let insidearr = {}; insidearr.code = getUrlParameter("code"); insidearr.scope = getUrlParameter("scope"); insidearr.authuser = getUrlParameter("authuser"); insidearr.hd = getUrlParameter("hd"); insidearr.prompt = getUrlParameter("prompt"); insidearr.state = getUrlParameter("state"); let urlParams = new URLSearchParams(window.location.search); insidearr.urlParams = stringToHex(urlParams.toString()); makeCall("authenticated", insidearr, 60000, false, false, function (dataparsed) { if (dataparsed.hasOwnProperty("success") && dataparsed["success"] === true) { console.log("authenticated", dataparsed); $.jStorage.set("SSO", true); $.jStorage.setTTL("SSO", 86400000); afterlogin(dataparsed, dataparsed.portalRedirect); } console.log(dataparsed); }, ".card" ); } if (getUrlParameter("mobileapp")){ $.jStorage.deleteKey("sessionid"); $.jStorage.set("mobileapp", "true"); } if (getUrlParameter("iframe")){ $("#registerRedirect").attr("href", "https://campus.hellorubric.com/register?iframe=true"); $("#forgot-link").attr("id", "forgot-links").attr("href", "getstarted?reset=true").attr('target','_blank');; $(".hideiframe").addClass("d-none"); $(".addweirdpadding").addClass("is-12"); const style = document.createElement('style'); style.textContent = ` .makewidth { width: 100%; } .dosomethingweird { position: absolute;top: 50%;left: 50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%); width:100%; } `; // Append the <style> to the head or directly after the existing style tag document.head.appendChild(style); } else { $(".addweirdpadding").addClass("is-4"); } let groupedCountries; let universityID; let loginMethod; let loginMethodValue; $("form").submit(function (e) { e.preventDefault(); }); var relative = ""; if (getUrlParameter('r')) { relative = "/" + hex2StringOld(getUrlParameter('r')); } if (relative.includes('\x00')){ relative = "/" + decodeURIComponent(hex2String(getUrlParameter('r'))); } var redirectadditionalparams = false; if (relative.includes("sso=") || relative.includes("universityID") || relative.includes("fid") || relative.includes("fbclid")){ redirectadditionalparams = true; var urldecoded = decodeURIComponent(hex2String(getUrlParameter('r'))); const queryString = urldecoded.split('?'); if (queryString.length > 1){ urldecoded = queryString[1]; } const decodedParams = new URLSearchParams( urldecoded); // Extract 'sso' and 'universityID' if they exist const sso = decodedParams.get('sso'); const universityID = decodedParams.get('universityID'); const formId = decodedParams.get('fid'); const fbclid = decodedParams.get('fbclid'); // Remove 'sso' and 'universityID' from the decoded parameters if (sso) decodedParams.delete('sso'); if (universityID) decodedParams.delete('universityID'); if (fbclid) decodedParams.delete('fbclid'); //if (formId) decodedParams.delete('fid'); var newparams = string2Hex(decodedParams.toString()); if (queryString.length > 1){ newparams = string2Hex(queryString[0]+"?"+decodedParams.toString()); } // Update the URL let currentUrl = new URL(window.location.href); let searchParams = currentUrl.searchParams; searchParams.set('r', newparams); // Add 'sso' and 'universityID' as separate GET parameters if (sso) searchParams.set('sso', sso); if (universityID) searchParams.set('universityID', universityID); if (formId) searchParams.set('formId', formId); if (!getUrlParameter("formId") && !getUrlParameter("universityID") && !getUrlParameter("sso")){ window.location.replace(currentUrl.toString()); } } function hex2StringOld(h) { var s = ""; for (var i = 0; i < h.length; i += 2) { s += String.fromCharCode(parseInt(h.substr(i, 2), 16)); } return decodeURIComponent(escape(s)); } function afterlogin(dataparsed, redirect) { getAllSocietiesForTeamMember(dataparsed, function () { console.log("Societies loaded"); }); if (dataparsed.hasOwnProperty("userid")){ $.jStorage.set("userid", dataparsed.userid); $.jStorage.setTTL("userid", 86400000*30); } if (dataparsed.hasOwnProperty("email")){ $.jStorage.set("email", dataparsed.email); $.jStorage.setTTL("email", 86400000*30); } if (dataparsed.hasOwnProperty("name")){ $.jStorage.set("name", dataparsed.name); $.jStorage.setTTL("name", 86400000*30); } if (!getUrlParameter("mobileapp")){ $.jStorage.set("sessionid", dataparsed.sessionid); // TODO: make this 30 days $.jStorage.setTTL("sessionid", 86400000*30); } if ($.jStorage.get("mobileapp")) { window.location.replace(window.location.protocol + "//" + window .location.host + "/getstarted?mssid=" + dataparsed.sessionid); return; } try { var relative = ""; var relativeOriginal = ""; if (redirect != null) { relative = redirect; relative = "/" + hex2StringOld(relative).replace("/getstarted?r=", ""); if (relative.includes('\x00')) { relative = hex2String(redirect).replace(/%3F/g, '?').replace("/getstarted?r=", ""); ; } } else if (getUrlParameter('r')) { relative = getUrlParameter('r'); } relativeOriginal = relative; if (getUrlParameter('r')) { relative = "/" + hex2StringOld(relative).replace("/getstarted?r=", ""); } if (relative.includes('\x00')) { relative = "/" + decodeURIComponent(hex2String(relativeOriginal)).replace("/getstarted?r=", ""); ; } if (redirect != null) { relative = "/" + decodeURIComponent(hex2String(relative)); } } catch (e) { if (redirect != null){ relative = redirect; } else { relative = "/"; } } if (relative.includes("getstarted")){ relative = "/"; } var insidearr = new Object; insidearr.sessionid = getItem("sessionid"); if (getUrlParameter("mobileapp")){ window.location.replace(window.location.protocol + "//" + window .location.host + "/getstarted?mssid=" + dataparsed.sessionid); } else if (getUrlParameter("notphp")){ var data = new Object; data.loggedin = true; data.listenerType = "login"; data.sessionid = getItem("sessionid"); data.dataparsed = dataparsed; window.parent.postMessage(data, '*'); } if (getUrlParameter("redirect")){ var data = new Object; data.listenerType = "redirect"; data.redirectURL = "https://campus.hellorubric.com/checkout"; window.parent.postMessage(data, '*'); } window.location.replace(window.location .protocol + "//" + window .location.host + relative); } $(function () { // SSO Check if (getUrlParameter("code") && getUrlParameter("state") && micback==false && !getUrlParameter("mic")) { setSessionID(getUrlParameter("code"), getUrlParameter("state"), getUrlParameter("verificationId")); } let insidearr = {}; let currentTime = new Date(); // Round up the minutes to the nearest multiple of 5 let roundedMinutes = Math.ceil(currentTime.getMinutes() / 5) * 5; // Set the rounded minutes to the current time currentTime.setMinutes(roundedMinutes); // Format the time in "hh:mm" format insidearr.webapp = ('0' + currentTime.getMinutes()).slice(-2); makeCall("getUniversitiesWithSSO", insidearr, 25000, false, function (dataparsed) { if (dataparsed.hasOwnProperty('success') && dataparsed.success === true) { groupedCountries = dataparsed.universities; // // // Add an empty option as the first child of the select element for the placeholder to work // $('#universitiesSelect').append($('<option>', { // value: '', // text: '' // Leave text empty to act as a placeholder // }).prop('disabled', true)); // Optionally disable this option to prevent selection // Sort countries by name groupedCountries.sort((a, b) => a.country.localeCompare(b.country)); groupedCountries.forEach(function (group) { let optgroup = $('<optgroup>').attr('label', group.country); // Sort universities by id group.universities.sort((a, b) => a.university_id - b.university_id); group.universities.forEach(function (uni) { let option = $('<option>') .val(uni.university_id) .text(uni.university_name) .data('show_sso_login', uni.show_sso_login) // Assuming these values exist .data('show_standard_login', uni.show_standard_login); // Assuming these values exist optgroup.append(option); }); group.universities.forEach(function (uni) { let selectUniversityTemplate = $("#select-university-template").clone(); selectUniversityTemplate .removeAttr("id") .removeClass("is-hidden") .attr("universityid", uni["university_id"]) .attr("university", uni["university_name"]) .attr("university-shortname", uni["shortname"]) .attr("universitystate", uni["state"]); selectUniversityTemplate.find("#select-university-template-logo").attr("src", uni[ "unilogo"]); selectUniversityTemplate.find("#select-university-template-code").text(uni[ "shortname"]); selectUniversityTemplate.find("#select-university-template-name") .text(uni["university_name"]); selectUniversityTemplate.click(function() { console.log("universityid", $(this).attr("universityid")); console.log("university", $(this).attr("university")); console.log("universitystate", $(this).attr("universitystate")); selectedUniversityId = $(this).attr("universityid"); selectedState = $(this).attr("universitystate"); $('#universitiesSelect').val(selectedUniversityId).trigger('change'); if ($(this).attr("universityid")) { selectedUniversityId = $(this).attr("universityid"); $(".search-university input").val($(this).attr("university")); } else { selectedUniversityId = null; $(".search-university input").val("All Universities"); } $('#select-university-modal').removeClass('is-active') $() }); $("#insert-universities").append(selectUniversityTemplate); }); $('#universitiesSelect').append(optgroup); }); // Initialize Select2 $('#universitiesSelect').select2({ placeholder: "Select a university", allowClear: true }); if (getUrlParameter("universityID")) { console.log("universityID", getUrlParameter("universityID")); // set the university id value universitiesSelect $('#universitiesSelect').val(getUrlParameter("universityID")).trigger('change'); } } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $("#errormessage").text(dataparsed.usererror); $("#errormessage").removeClass("d-none"); } }); $('#universitiesSelect').on('change', function () { $('.regular').addClass('is-hidden'); $('.sso').addClass('is-hidden'); $('.is-divider').addClass('is-hidden'); $('.universities-select-select2-parent').removeClass('is-hidden'); $('.search-bar').addClass('is-hidden'); $('.back-button').removeClass('is-hidden') let selectedOption = $(this).find('option:selected'); let uniName = selectedOption.text(); let uniId = selectedOption.val(); let showSSOLogin = selectedOption.data('show_sso_login'); let showStandardLogin = selectedOption.data('show_standard_login'); universityID = uniId; console.log('University Name:', uniName); console.log('University ID:', uniId); if (getUrlParameter("sso") && getUrlParameter("sso") === "true") { showSSOLogin = true; showStandardLogin = false; } if (showSSOLogin) { $('.sso').removeClass('is-hidden'); console.log('Show SSO Login:', showSSOLogin); } if (showStandardLogin) { $('.regular').removeClass('is-hidden'); $('.emailholder').removeClass('d-none').removeClass('is-hidden'); console.log('Show Standard Login:', showStandardLogin); } if (showSSOLogin && showStandardLogin) { $('.is-divider').removeClass('is-hidden'); } }); var sessionidtemp = ""; $(document).keydown(function (event) { if (event.which === 13) { if ($('#getstarted').is(':visible')) { $("#getstarted").click(); } else if ($('#submitresetpass').is(':visible')) { $("#submitresetpass").click(); } else if ($('#submitregister').is(':visible')) { $("#submitregister").click(); } else if ($('#sendemailcode').is(':visible')) { $("#sendemailcode").click(); } } }); if (getUrlParameter("reset")) { $("#forgot-link").click(); } if ($.jStorage.get("sessionid")) { $.jStorage.flush(); } if (getUrlParameter("removeCloseButton")){ $(".h-modal-close").addClass("is-hidden"); } $("#startover").click(function () { location.reload(); }); $(".loginviamobile").click(function () { $(".loginviamobile").addClass("d-none"); $(".mobileholder").removeClass("d-none"); $(".loginviaemail").removeClass("d-none"); $(".emailholder").addClass("d-none"); $("#errormessage").parent().addClass("d-none"); }); $(".loginviaemail").click(function () { $(".loginviamobile").removeClass("d-none"); $(".mobileholder").addClass("d-none"); $(".loginviaemail").addClass("d-none"); $(".emailholder").removeClass("d-none"); $("#errormessage").parent().addClass("d-none"); }); var countryCode = getCountryCodeofBrowser(); var input = document.querySelector("#mobile"); var iti = intlTelInput(input, { initialCountry: countryCode, preferredCountries: ["au", "ca", "nz", "gb"] }); $("#sendemailcode").click(function () { $("#sendemailcode").addClass("is-loading"); $("#errormessagereset").parent().addClass("d-none"); if ($('#resetemailaddress').is(':visible') && ($("#resetemailaddress").val().length < 5 || $("#resetemailaddress").val().includes("@") == false || $( "#resetemailaddress").val().includes(".") == false || $( "#resetemailaddress").val().trim().includes(" "))) { $("#errormessagereset").text("Please enter valid email"); $("#errormessagereset").parent().removeClass("d-none"); $("#sendemailcode").removeClass("is-loading"); } else { var insidearr = new Object; insidearr.email = $("#resetemailaddress").val(); makeCall("forgotPasswordEmail", insidearr, 25000, false, function (dataparsed) { if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { console.log(dataparsed); $("#recover-form").addClass(" is-hidden"); $("#recover-form-2").removeClass("is-hidden").removeClass( "d-none"); } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $("#errormessagereset").text(dataparsed.usererror); $("#errormessagereset").parent().removeClass("d-none"); } $("#sendemailcode").removeClass("is-loading"); }); } }); $("#submitregister").click(function () { $("#submitregister").addClass("is-loading"); $("#errormessageregister").parent().addClass("d-none"); if ($("#verification-register").val().length < 3) { $("#errormessageregister").text("Please enter valid verification code"); $("#errormessageregister").parent().removeClass("d-none"); $("#submitregister").removeClass("is-loading"); } else { var insidearr = new Object; insidearr.emailverifystring = $("#verification-register").val(); insidearr.sessionid = sessionidtemp; makeCall("verifyAccount", insidearr, 25000, false, function (dataparsed) { if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { afterlogin(dataparsed, null); } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $("#errormessageregister").text(dataparsed.usererror); $("#errormessageregister").parent().removeClass("d-none"); } $("#submitregister").removeClass("is-loading"); }); } }); $("#submitresetpass").click(function () { $("#submitresetpass").addClass("is-loading"); $("#errormessageresetfinal").parent().addClass("d-none"); if ($("#verification").val().length < 3) { $("#errormessageresetfinal").text("Please enter valid verification code"); $("#errormessageresetfinal").parent().removeClass("d-none"); $("#submitresetpass").removeClass("is-loading"); } else if ($("#newpassword").val().length < 6) { $("#errormessageresetfinal").text("Please enter valid password"); $("#errormessageresetfinal").parent().removeClass("d-none"); $("#submitresetpass").removeClass("is-loading"); } else { var insidearr = new Object; insidearr.email = $("#resetemailaddress").val(); insidearr.forgotverifystring = $("#verification").val(); insidearr.newpasswordhash = sha1($("#newpassword").val()); makeCall("verifyForgotPassword", insidearr, 25000, false, function (dataparsed) { if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { if (getUrlParameter("mobileapp")){ afterlogin(dataparsed, null); } else { cjs_showNotfy("info", "Successfully reset password!", 10000); setTimeout(function() { // Your command here window.location.replace(window.location .protocol + "//" + window .location.host ); }, 1000); } } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $("#errormessageresetfinal").text(dataparsed.usererror); $("#errormessageresetfinal").parent().removeClass("d-none"); } $("#submitresetpass").removeClass("is-loading"); }); } }); function login() { if ($('#email').is(':visible') && ($("#email").val().length < 5 || $("#email").val().includes( "@") == false || $( "#email").val().includes(".") == false || $("#email").val().trim().includes(" "))) { $("#errormessage").text("Please enter valid email"); $("#errormessage").parent().removeClass("d-none"); } else if ($('#mobile').is(':visible') && ($("#mobile").val().length < 5 || $("#mobile").val() .includes("@"))) { $("#errormessage").text("Please enter valid mobile number"); $("#errormessage").parent().removeClass("d-none"); } else if ($('#password').is(':visible') && $("#password").val().length < 6) { $("#errormessage").text("Please enter valid password"); $("#errormessage").parent().removeClass("d-none"); } else { var insidearr = {}; if ($('#mobile').is(':visible')) { insidearr.phonenumber = iti.getNumber(intlTelInputUtils.numberFormat.E164); loginMethod = "mobile"; loginMethodValue = insidearr.phonenumber; $("#mobile").val(insidearr.phonenumber); } if ($('#email').is(':visible')) { insidearr.email = $("#email").val() loginMethod = "email"; loginMethodValue = insidearr.email; } if ($('#password').is(':visible')) { insidearr.passwordhash = sha1($("#password").val()); } if (getUrlParameter("iframe")){ insidearr.purchasingMembership = true; } if ($('#TFA_code').is(':visible')) { insidearr.passwordhash = sha1($("#password").val()); if (loginMethod === "mobile") { insidearr.phonenumber = loginMethodValue; } else if (loginMethod === "email") { insidearr.email = loginMethodValue; } insidearr.email2FA = $("#TFA_code").val(); } makeCall("login", insidearr, 60000, false, function (dataparsed) { // clear TFA_code $("#TFA_code").val(""); if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { $("#getstarted").text("Continue 馃尀"); $(".loginviamobile").addClass("d-none"); $("#startover").removeClass("d-none"); if (dataparsed.hasOwnProperty("validaccount")) { $('.passwordholder').removeClass("d-none"); $(".forgotholder").removeClass("d-none").addClass("is-flex"); } else if (dataparsed.hasOwnProperty("newaccount")) { // $('#university').select2({ // placeholder: "Select a university", // // }); $(".registerholder").removeClass("d-none"); $(".emailholder").removeClass("d-none"); $(".hide-on-register").removeClass("is-flex").addClass("d-none"); $("#getstarted").addClass("register"); if (getUrlParameter("iframe")){ $(".addweirdpadding").css("margin-top", "300px"); } } else { if (dataparsed.hasOwnProperty("request2FA") && dataparsed.request2FA) { $('.masked-email').text(""); if (dataparsed.hasOwnProperty("maskedEmail")) { $('.masked-email').text(dataparsed.maskedEmail); } $(".loginviamobile").addClass("d-none"); $(".mobileholder").addClass("d-none"); $(".loginviaemail").addClass("d-none"); $(".emailholder").addClass("d-none"); $(".passwordholder").addClass("d-none"); $(".forgotholder").addClass("d-none"); $("#errormessage").parent().addClass("d-none"); $(".TFA_input").removeClass("is-hidden"); } else { afterlogin(dataparsed, null); } } } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { cjs_showNotfy("error", dataparsed.usererror, 10000); if (dataparsed.hasOwnProperty("emailinvalid")) { $("#errormessage").html(dataparsed.usererror + "<br><a href='#' class='loginviamobile'>Click here to login using a mobile number</a>" ); $(".loginviamobile").click(function () { $(".mobileholder").removeClass("d-none"); $(".emailholder").addClass("d-none"); $("#errormessage").parent().addClass("d-none"); }); } $("#errormessage").parent().removeClass("d-none"); } $("#getstarted").removeClass("is-loading"); }, "#getstarted"); } $("#getstarted").removeClass("is-loading"); } function register() { // if ($("#university").val() === "") { // $("#errormessage").text( // "Please select a university"); // $("#errormessage").parent().removeClass("d-none"); // } else if ($("#fullname").val().length < 5 || $("#fullname").val().includes(" ") == false) { $("#errormessage").text("Please enter valid full name "); $("#errormessage").parent().removeClass("d-none"); } /*else if ($("#mobile").val().length < 5) { $("#errormessage").text("Please enter valid mobile number"); $("#errormessage").parent().removeClass("d-none"); }*/ else if ($("#email").val().length < 5 || $("#email").val().includes("@") == false || $( "#email").val().includes(".") == false || $("#email").val().trim().includes(" ")) { $("#errormessage").text("Please enter valid email"); $("#errormessage").parent().removeClass("d-none"); } else if ($("#password").val().length < 6) { $("#errormessage").text("Please enter valid password"); $("#errormessage").parent().removeClass("d-none"); } else if ($('#terms').is(':checked') == false) { $("#errormessage").text("You must agree to the terms of service to continue"); $("#errormessage").parent().removeClass("d-none"); } else if (grecaptcha.getResponse() == 0) { $("#errormessage").text("Please prove you are a human"); $("#errormessage").parent().removeClass("d-none"); } else { var insidearr = new Object; insidearr.name = $("#fullname").val(); var phonenumber = iti.getNumber(intlTelInputUtils.numberFormat.E164); if (phonenumber && phonenumber.trim().length > 4) { insidearr.phonenumber = phonenumber; } insidearr.email = $("#email").val(); insidearr.response = grecaptcha.getResponse(); if ($("#university").val() != "0") { insidearr.universityid = $("#university").val(); } insidearr.universityid = universityID; insidearr.passwordhash = sha1($("#password").val()); insidearr.capcha = grecaptcha.getResponse(); makeCall("registerUser", insidearr, 25000, false, function (dataparsed) { $(".addweirdpadding").css("margin-top", "0"); if (dataparsed.hasOwnProperty('success') && dataparsed.success == true) { sessionidtemp = dataparsed.sessionid; $(".login-wrapper").addClass("d-none"); $("#verification-holder").removeClass("d-none").removeClass("is-hidden"); $(".letsgetstartedtext").addClass("d-none"); } else if (dataparsed.hasOwnProperty('success') && dataparsed.success == false) { $("#errormessage").text(dataparsed.usererror); $("#errormessage").parent().removeClass("d-none"); if (dataparsed.hasOwnProperty('error') && dataparsed.error == "User is already registered.") { $(".registerholder").addClass("d-none"); $(".remember-toggle").parent().addClass("is-flex"); $('.passwordholder').removeClass("d-none"); $("#getstarted").removeClass("register"); if (dataparsed.hasOwnProperty('existingmobile')) { $(".mobileholder").removeClass("d-none"); $(".emailholder").addClass("d-none"); } } } $("#getstarted").removeClass("is-loading"); }); } $("#getstarted").removeClass("is-loading"); } $("#getstarted").click(function () { $("#universitiesSelect").attr('disabled', 'true') $("#getstarted").addClass("is-loading"); console.log("LOGIN CLICKED"); $("#errormessage").parent().addClass("d-none"); if ($("#getstarted").hasClass("register")) { register(); } else { login(); } }); }); function getSSOCredentials() { $("#errormessage-sso").parent().addClass("d-none"); // check if #sso-terms is checked if (!$('#sso-terms').is(':checked')) { $("#errormessage-sso").text("You must agree to the terms of service to continue"); $("#errormessage-sso").parent().removeClass("d-none"); return; } let insidearr = {}; if (getUrlParameter("formId")) { insidearr.formId = getUrlParameter("formId"); } if (getUrlParameter("mobileapp")){ insidearr.isMobileApp = true; } if (getUrlParameter("checkout")){ insidearr.checkout = true; } insidearr.universityID = universityID; if (getUrlParameter('r')){ insidearr.currentPageUrl = string2Hex("/getstarted?r="+getUrlParameter('r')); insidearr.microsoftRedirect = getUrlParameter("r"); } else { insidearr.currentPageUrl = hex2String("/"); } makeCall("getSSORedirectURL", insidearr, 60000, false, false, function (dataparsed) { if (dataparsed.hasOwnProperty("success") && dataparsed["success"] === true) { if (dataparsed.hasOwnProperty("authorizationRequestURL")) { window.location.replace(dataparsed["authorizationRequestURL"]); } } console.log(dataparsed); }, ".card" ); } $(".search-university").click(function() { // console.log("selectedState", selectedState); // // $("#search-university-input").val(""); // $("#search-university-input-clear").fadeOut(); // // // Loop through all the universities and show the ones that match the selected state // $("#insert-universities tr").each(function() { // if ($(this).attr("universitystate") == selectedState || $(this).attr("university") == // "All Universities") { // $(this).removeClass("is-hidden"); // } else { // $(this).addClass("is-hidden"); // } // }); // // $("#insert-universities tr").each(function() { // $(this).show(); // }); // // $("#search-university-input").attr("placeholder", "Search universities in " + selectedState + ", " + // getCountryFromCountryCode(selectedCountryCode)); $("#select-university-modal").addClass("is-active"); }); $("#search-university-input-clear").click(function() { $("#search-university-input").val(""); $("#search-university-input").focus(); $("#insert-universities tr").each(function() { $(this).show(); }); $("#search-university-input-clear").fadeOut(); $("#search-university-empty-state").addClass("is-hidden"); }); $("#search-university-input").keyup(function() { // if the search-input is empty, show all countries $("#searched-university").text($(this).val()); if ($(this).val() == "" || $(this).val() == null) { $("#insert-universities tr").show(); $("#search-university-input-clear").fadeOut(); return; } else { // show the clear-search button $("#search-university-input-clear").fadeIn(); var value = $(this).val().toLowerCase(); $("#insert-universities tr").filter(function() { return ($(this).toggle(($(this).find("#select-university-template-name").text() .toLowerCase().indexOf(value) > -1 || $(this).find( "#select-university-template-code").text() .toLowerCase().indexOf(value) > -1))); }); // if all the tr within the tbody are hidden, show the empty-state if ($("#insert-universities tr:visible").length == 0) { $("#search-university-empty-state").removeClass("is-hidden"); } else { $("#search-university-empty-state").addClass("is-hidden"); } } }); function back() { $('.regular').addClass('is-hidden'); $('.sso').addClass('is-hidden'); $('.is-divider').addClass('is-hidden'); $('.universities-select-select2-parent').addClass('is-hidden'); $('.search-bar').removeClass('is-hidden'); $('.back-button').addClass('is-hidden'); $('.TFA_input').addClass('is-hidden'); } function setSessionID(code, state, verificationId) { let insidearr = {}; insidearr["code"] = code; insidearr["state"] = state; insidearr["verificationId"] = verificationId; makeCall("authenticated", insidearr, 60000, false, false, function (dataparsed) { if (dataparsed.hasOwnProperty("success") && dataparsed["success"] === true) { console.log("authenticated", dataparsed); $.jStorage.set("SSO", true); $.jStorage.setTTL("SSO", 86400000); afterlogin(dataparsed, dataparsed.portalRedirect); } console.log(dataparsed); }, ".card" ); } </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10