{"version":3,"sources":["assets/getAssistance/nextBackarrows.png","assets/getAssistance/domainStatus.png","assets/getAssistance/submitHomepage.png","assets/getAssistance/submitQuestionnaire.png","http-common.js","services/auth.service.js","components/auth/authenticatedRoute.component.js","components/auth/login.component.js","constants.js","components/privacyStatement.component.js","components/cookieNotice.component.js","components/termsofUse.component.js","components/auth/register.component.js","components/auth/verify.component.js","services/auth-header.js","services/user.service.js","components/auth/resetPassword.component.js","components/auth/forgotPassword.component.js","components/auth/logout.component.js","services/organization.service.js","services/answer.service.js","components/questionnaire.component.js","components/understandingResults.component.js","components/summary.component.js","components/dashboard.component.js","components/responses.component.js","components/users.component.js","components/getAssistance.component.js","components/header.component.js","components/footer.component.js","App.js","serviceWorker.js","index.js","assets/cmmc-logo-allwhite.png","assets/getAssistance/questionnaireIcon.png","assets/getAssistance/summaryPage.png","assets/getAssistance/nextStepsIcon.png","assets/getAssistance/nextSteps.png","assets/getAssistance/manageUsers.png","assets/getAssistance/addUser.png","assets/getAssistance/addUserForm.png","assets/getAssistance/editUser.png","assets/getAssistance/saveUserinfo.png","assets/getAssistance/additionalQuestions.png","assets/getAssistance/viewResponses.png","assets/getAssistance/responses.png","assets/getAssistance/info.png","assets/getAssistance/domains.png"],"names":["module","exports","axios","create","baseURL","process","headers","email","password","http","post","then","response","data","accessToken","sessionStorage","setItem","JSON","stringify","removeItem","parse","getItem","userId","key","put","AuthenticatedRoute","AuthService","isUserLoggedIn","this","props","to","Component","Login","handleLogin","bind","onChangeEmail","onChangePassword","message","location","search","state","loading","e","setState","target","value","preventDefault","login","res","history","push","window","reload","error","resMessage","toString","className","role","type","placeholder","name","onChange","required","href","onClick","constants","Password_Validation_Regex","Email_Validation_Regex","PrivacyStatement","useState","show","setShow","handleClose","Modal","size","onHide","Header","closeButton","Title","Body","Footer","Button","variant","CookieNotice","TermsofUse","linkTitle","class","defaultProps","Register","handleSubmit","handleInputChange","validateForm","firstName","lastName","organization","verifyPassword","terms","submitted","hasFirstNameError","hasLastNameError","hasOrganizationError","hasEmailError","hasPasswordError","hasTermError","passwordErrorMsg","hasVerifyPasswordError","validate","password_reg","email_reg","toggleValidating","validationErrors","length","firstNameError","lastNameError","organizationError","test","String","toLowerCase","emailError","passwordError","verifyPasswordError","termError","Object","keys","event","checked","register","account","accountErrorMsg","onSubmit","onBlur","renderForm","Verify","verifyKey","verified","match","params","verifyEmail","authHeader","user","id","get","ResetPassword","onChangeRepeatPassword","updatePassword","checkLink","repeatPassword","validLink","UserDataService","checkResetLink","body","forgotPassword","catch","err","Logout","logout","organizationId","answer","Questionnaire","toggleQuestion","updateQuestionnaireState","getOrgInfo","getCompletion","questionnaire","currentDomain","currentUser","getCurrentUser","orgInfo","totalDomains","showMessage","OrganizationDataService","completed","remaining","forEach","domain","percentComplete","org","submittedUser","submit","find","scrollTo","index","findIndex","d","setActiveDomain","question","answerId","answers","domainId","questionId","AnswerDataService","updateAnswer","data-capability-code","capabilityCode","text","code","data-domain-code","completion","map","renderNavButton","dangerouslySetInnerHTML","__html","helpText","questions","renderButtons","slice","submitQuestionnaire","loadPreviousDomain","loadNextDomain","UnderstandingResults","Summary","getStarted","maturity","questionnaireState","getMaturityLevel","level_stats","levels","missingRequirementsText","domains","missing","count","t","capabilities","processes","console","log","processesText","processValues","files","resourcePlan","assessmentPlan","improvementPlan","i","totalCompleted","totalCapabilities","item","getLevelByOrg","organizationName","userName","userEmail","renderLevel","getCapabilitiesText","getProcessesText","getStepOneText","Dashboard","getCompletionByOrg","currentLevel","style","width","Math","floor","Responses","checkStarted","submittedDate","utcDate","updatedAt","localDate","Date","dateString","getMonth","getDate","getFullYear","getUserInfo","getUser","print","parentId","renderAnswer","ROLES","Users","getUsers","editUser","updateUser","newUserSubmit","updateUserCancel","validateNewUserForm","validateEditUserForm","users","newUser","userStatus","resetPassword","emailMessage","getUsersByOrg","loggedInUser","date","STATUS","0","1","2","Table","responsive","colSpan","htmlFor","hasFirsthasLastNameErrorNameError","formatDate","newUserCancel","addUser","GetAssistance","src","imgQuestionnaireIcon","imgDomainNav","imgDomainStatus","imgNextBackArrows","imgAdditionalQuestions","imgInfo","imgSubmitQuestionnaire","imgSubmitHomepage","imgViewResponses","imgResponses","imgManageUsers","imgAddUser","imgAddUserForm","imgEditUser","imgSaveUserInfo","imgNextStepsIcon","imgSummaryPage","imgNextSteps","Navbar","collapseOnSelect","expand","fixed","Toggle","aria-controls","Collapse","Brand","logo","Nav","NavDropdown","title","Item","ShowTheTitleWithRouter","ShowTheTitle","page","pathname","getPageTitle","React","withRouter","Text","App","exact","path","component","ForgotPassword","Boolean","hostname","require","config","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e0707a4c.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/nextBackarrows.29a629af.png\";","module.exports = __webpack_public_path__ + \"static/media/domainStatus.2499f2eb.png\";","module.exports = __webpack_public_path__ + \"static/media/submitHomepage.61712d4e.png\";","module.exports = __webpack_public_path__ + \"static/media/submitQuestionnaire.afb918c7.png\";","import axios from \"axios\";\n\nexport default axios.create({\n baseURL: process.env.REACT_APP_BASEURL,\n headers: {\n \"Content-type\": \"application/json\"\n }\n});\n","import http from \"../http-common\";\n\nclass AuthService {\n\n login(email, password) {\n return http\n .post(\"/auth/signin\", {\n email,\n password\n })\n .then(response => {\n if (response.data.accessToken) {\n sessionStorage.setItem(\"user\", JSON.stringify(response.data));\n }\n return response;\n });\n }\n\n logout() {\n sessionStorage.removeItem(\"user\");\n }\n\n getCurrentUser() {\n return JSON.parse(sessionStorage.getItem('user'));\n }\n\n isUserLoggedIn() {\n let user = sessionStorage.getItem('user');\n if (user === null) return false;\n return true;\n }\n\n register(data) {\n return http\n .post(\"/auth/register\", data)\n .then(response => {\n return response;\n });\n }\n\n verifyEmail(userId, key) {\n return http\n .put(\"/auth/verify/\"+userId+\"/\"+key)\n .then(response => {\n return response;\n });\n }\n\n forgotPassword(email){\n return http.put(`/auth/forgot`, email)\n }\n\n}\n\nexport default new AuthService();","import React, { Component } from 'react'\nimport { Route, Redirect } from 'react-router-dom'\n\nimport AuthService from '../../services/auth.service';\n\nclass AuthenticatedRoute extends Component {\n render() {\n if (AuthService.isUserLoggedIn()) {\n return ( \n \n )\n } else {\n return \n }\n }\n}\n\nexport default AuthenticatedRoute","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Switch, Route, Link, Redirect } from \"react-router-dom\";\n\nimport AuthService from \"../../services/auth.service\";\n\nexport default class Login extends Component {\n constructor(props) {\n super(props);\n this.handleLogin = this.handleLogin.bind(this);\n this.onChangeEmail = this.onChangeEmail.bind(this);\n this.onChangePassword = this.onChangePassword.bind(this);\n\n let message = \"\";\n if(props.location.search === \"?verify\"){\n message= \"Your email has been verified\";\n }\n if(props.location.search === \"?logout\"){\n message= \"You have been logged out\";\n }\n if(props.location.search === \"?reset\"){\n message= \"Your password has been reset, please login below\";\n }\n if(props.location.search === \"?invalid\"){\n message= \"That link is no longer valid\";\n }\n\n this.state = {\n email: \"\",\n password: \"\",\n loading: false,\n message: message\n };\n\n \n }\n\n componentDidMount() {\n \n }\n\n // change email field\n onChangeEmail(e) {\n this.setState({\n email: e.target.value\n });\n }\n\n // change password\n onChangePassword(e) {\n this.setState({\n password: e.target.value\n });\n }\n\n // handle login\n handleLogin(e) {\n e.preventDefault();\n\n this.setState({\n message: \"\",\n loading: true\n });\n\n AuthService.login(this.state.email, this.state.password)\n .then(\n res => {\n this.props.history.push(\"/dashboard\");\n window.location.reload();\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n loading: false,\n message: resMessage\n });\n }\n );\n }\n\n // ...\n\n render() {\n if (AuthService.isUserLoggedIn()) {\n return ( \n \n )\n } \n else { \n return (\n
\n
\n
\n
\n {this.state.message && (this.state.message != \"\") ? (\n
\n
\n {this.state.message}\n
\n
\n ):null}\n
\n \n
\n \n
\n \n
\n
\n Create Account\n
\n
\n
\n
\n
\n );\n }\n }\n}\n","\nconst constants = {\n Password_Validation_Regex: /(?=^.{12,20}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^\\w])(?!.*\\s).*$/,\n Email_Validation_Regex: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n}\nexport default constants\n","import React, {useState} from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\n\nfunction PrivacyStatement() {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n \n Privacy Statement\n \n\n \n \n Privacy Statement\n \n \n
\n

Last revised: June 16, 2020

\n

Introduction

\n

Northcross Group (also referred to below as “NCG”, \"we\", \"us\" and \"our\") is a privacy conscious\n organization. This Privacy Notice explains how we protect your information gathered via (1) the Web pages\n of the NorthcrossGroup.com website or Web pages of any other website with respect to which this Privacy\n Notice is posted or linked (such Web pages are collectively referred to as the \"Website\"), (2)\n downloadable applications accessed from mobile devices with respect to which this Privacy Notice is posted\n or linked (\"Mobile Apps\") or (3) any other mode of interacting with you relating to Northcross Group\n communications, such as online or offline newsletters and magazines, that reference this Privacy Notice\n (“Communication”). By using the Website or Mobile Apps, or continuing to receive Communications, you agree\n to the use of such information in accordance with this Privacy Notice.\n

\n

Information Collection

\n

We may collect personal information and non-personal information that you might consider confidential\n (collectively, “Information”) when you interact with the Website or Mobile Apps, such as if you choose to\n register or create a user profile on the Website or a Mobile App (e.g., to gain access to specific\n content, attend a hosted event, respond to a survey or request communications about specific areas of\n interest), or otherwise provide it to us (e.g., to respond to a questionnaire on the Website). Depending\n on the specific Communication you are receiving, or the Web page of the Website or Mobile App you are\n using, personal information may consist of your name, current job title, company address, email address,\n telephone and fax numbers, correspondence with you, which newsletters you subscribe to, and other\n information you provide to us. Non-personal information could be information about your company that it\n considers valuable and that is not generally known.\n

\n

When using a Mobile App, in addition to contact information, we may also collect information relating to\n your device, including your device model, operating system, browser type, unique device identifier, IP\n address, mobile phone number, mobile network carrier, location, and the way you are using the Mobile App.\n The information collected will depend on the functionality of the specific Mobile App you are using. If\n any other information is collected relating to your use of a Mobile App, such information will be\n specified in the Mobile App.\n

\n

We may also collect personal information if you register for the Website using a third-party social\n network account (e.g., LinkedIn, Facebook, and Twitter). For example, the Website or a Mobile App may\n allow you to login using your social network account credentials. We may collect the user name associated\n with that social media account and any information or content you have permitted the social media network\n to share with us, such as your profile picture, email address, and birthday. The information we collect in\n this manner may depend on the privacy settings you have with the social network site, so please review the\n privacy statement or policy of the applicable social network site. When you access the Website through\n your social network account, you are authorizing us to collect and use your personal information in\n accordance with this Privacy Notice.\n

\n

The Website may also collect content that you provide, including postings on blogs, forums, wikis, and\n other social media applications and services that we may provide, and non-personal information that you\n may consider confidential.\n

\n

We do not collect sensitive personal information (i.e., data relating to race or ethnic origin, religious\n or philosophical beliefs, trade union membership, political opinions, medical or health conditions, or\n information specifying the sex life or sexual orientation of an individual) from users. If you provide\n confidential information you represent that you are authorized to provide that information to us.\n

\n

Log Information, Cookies and Web Beacons

\n

The Website and Mobile Apps collect standard Internet log information including your IP address, browser\n type and language, access times and referring website addresses. To ensure that the Website, Mobile Apps\n and Communications are well managed and to facilitate improved navigation, we or our service provider(s)\n may also use cookies (small text files stored in a user's browser) or Web beacons (electronic images that\n allow us to count users who have accessed particular content and to access certain cookies) to collect\n aggregate data. Additional information on how we use cookies and other tracking technologies and how you\n can control these can be found in our Cookie Notice.\n

\n

Information Use

\n

We collect and use Information with your consent to provide you with access to the Website, Mobile Apps\n and Communications, or where we have a legitimate business interest in or other legal basis for, such\n collection and use. Information you submit to us may be used to manage our relationship with you,\n including any of your requests, or to customize or improve the Website or a Mobile App and related\n services offered to you, or to provide you with customized advice.\n

\n

We may also use your personal information for marketing purposes, or to send you promotional materials or\n communications regarding services provided by us that we feel may be of interest to you. We may also\n contact you to seek feedback on services provided or for market or other research purposes. Your personal\n information may also be used to protect our rights or property and that of our users.\n

\n

You may at any time request that we discontinue sending you Communications, emails or other\n correspondence.\n

\n

Disclosure of Information to Third Parties

\n

We may provide your personal information to third parties we have a business relationship with to provide\n you with information that could be of interest to you and conduct market or other research. Information\n may also be disclosed to third parties: in order to respond to your requests or inquiries; as part of a\n corporate transaction (such as a sale, divestiture, reorganization, merger or acquisition); or where those\n parties handle information on our behalf.\n

\n

Information may also be disclosed to law enforcement, regulatory or other government agencies, or to\n other third parties, in each case to comply with legal, regulatory, or national security obligations or\n requests.\n

\n

In relation to Mobile Apps, we may also share your usage and personal information with mobile carriers\n and platform providers, as well as any other entities described in any particular Mobile App in connection\n with the operation of the Mobile App.\n

\n

In relation to Communications, we may also share your personal information with service providers in\n connection with the delivery of such Communications.\n

\n

All of these disclosures may involve the transfer of personal information to countries or regions without\n data protection rules similar to those in effect in your area of residence.\n

\n

By providing Information with respect to a Communication or through the Website or a Mobile App, you are\n consenting to the disclosures described above.\n

\n

Any personal information that we have referenced above under “Information Collection” may be disclosed to\n the third parties identified in this section for the purposes set forth herein.\n

\n

Selling of Information

\n

We do not sell any Information that is collected under this Privacy Notice.

\n

Blogs, Forums, Wikis and other Social Media

\n

The Website may host various blogs, forums, wikis and other social media applications or services that\n allow you to share content with other users (collectively Social Media Applications). Any personal\n information or other information that you contribute to any Social Media Application can be read,\n collected and used by other users of that Social Media Application over whom we have little or no control.\n Therefore, we are not responsible for any other user's use, misuse or misappropriation of any personal\n information or other information that you contribute to any Social Media Application.

\n

Privacy Practices of Third Parties

\n

This Privacy Notice only addresses the use and disclosure of information collected by Northcross Group\n through your interaction with the Website and the Mobile Apps and through other interactions with\n Northcross Group relating to a Communication. Other websites or mobile apps that may be accessible through\n links from the Communication, Website, or Mobile Apps have their own privacy statements and personal\n information collection, use and disclosure practices. We encourage you to familiarize yourself with the\n privacy statements provided by these other parties prior to providing them with information.

\n

Information Retention

\n

We retain Information as necessary for the duration of the purpose outlined in this Privacy Notice.\n Notwithstanding the duration of the purpose, we may retain your information if necessary to comply with\n our legal or professional obligations, enforce our agreements, or resolve disputes.

\n

Rights to Access and Control Your Personal Information

\n

You have choices about how your personal information is collected, used and shared.\n

\n

If you choose to register for a Communication or with the Website or a Mobile App, you may access your\n user profile, correct and update your details, or unsubscribe at any time. If you decide that you no\n longer wish to have your third-party social network site account (e.g., LinkedIn, Facebook, or Twitter)\n linked to your profile on the Website or a Mobile App, you may change your account settings at any time.\n If you have any problem accessing your profile, or would like to request a copy of your profile, please contact us.\n

\n

Depending on the jurisdiction in which you are located, you may have the right to request that we modify,\n delete, or stop processing your personal information, and you may also have the right to request that we\n provide the following information regarding the personal information we hold about you:\n

\n
    \n
  • The categories and/or specific pieces of personal information we collected

  • \n
  • The categories of sources from which personal information is collected

  • \n
  • The business or commercial purpose for collecting personal information

  • \n
  • The categories of third parties with whom we shared personal information

  • \n
\n

To exercise any of your rights under applicable law described above regarding your personal information,\n please contact us. When contacting us, please provide your name and email\n address. Once we receive your request, we may ask you to provide additional information to enable us to\n respond.\n

\n

Applicable laws may also give you the right to lodge a complaint with a local supervisory authority\n related to this Privacy Notice.\n

\n

We will not discriminate against you for exercising any of your rights with respect to your personal\n information.\n

\n

This section does not apply to non-personal information that you might consider confidential, as such\n information is not retained by us beyond the Website session. If you have any concern about how such\n non-personal information might be used, simply do not provide it to us.\n

\n

Special Notices to California Residents

\n

If you are a California resident, you are entitled to request information concerning any personal\n information you provide to us as part of an established business relationship for personal, family, or\n household purposes that we disclose to nonaffiliated third parties for their direct marketing purposes. We\n do not share such personal information with nonaffiliated third parties for such purposes.\n

\n

Do Not Track

\n

\"Do Not Track\" is a preference you can set in your Web browser to let the websites you visit know that\n you do not want them collecting information about you. The Website does not currently respond to a \"Do Not\n Track\" or similar signal. We do not engage in the collection of personal information about your online\n activities over time and across third party websites or online services to provide targeted advertising\n and we do not allow third parties to collect such personal information when you use the Website.\n

\n

Information Security

\n

We have in place reasonable commercial standards of technology and operational security to protect all\n Information provided by users with respect to Communications, or via the Website or Mobile Apps, from\n unauthorized access, disclosure, alteration or destruction.\n

\n

Children's Privacy Protection

\n

We understand the importance of protecting children's online privacy. Communications, the Website and\n Mobile Apps are not designed for or intentionally targeted at children under the age of 13. It is not our\n policy to intentionally collect or maintain information about anyone under the age of 13. If we obtain\n actual knowledge that we have received such information, we will take steps to delete it.\n

\n

Changes to our Privacy Notice

\n

In addition to describing our current privacy practices, this Privacy Notice also describes the\n categories of personal information we collected, disclosed, or sold during the preceding 12 months. We may\n modify or amend this Privacy Notice from time to time at our discretion. When we make changes to this\n Privacy Notice, we will amend the revision date at the top of this page and such modified or amended\n Privacy Notice shall be effective as to you and your information as of that revision date. We encourage\n you to periodically review this Privacy Notice to view any updates.\n

\n

Contact Information

\n

If you have any questions or concerns regarding your privacy while using the Website or a Mobile App, or\n upon receipt of a Communication, please contact us.\n

\n
\n
\n \n \n \n
\n \n );\n}\n\nexport default PrivacyStatement;","import React, {useState} from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\nimport PrivacyStatement from \"./privacyStatement.component\";\nfunction CookieNotice() {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n \n Cookie Notice\n \n\n \n \n Cookie Notice\n \n \n
\n

Last revised: June 16, 2020

\n

This Website uses cookies to improve the user experience and ensure that it is functioning effectively.\n This Cookie Notice is part of our . For more information about us, and how we protect visitor information, please see our .\n

\n

In order to provide you with a more personalized and responsive service we need to remember and store\n information about how you use this Website. This is done using small text files called cookies. Cookies\n contain small amounts of information and are downloaded to your computer or other device by a server for\n this Website. Your web browser then sends these cookies back to this Website on each subsequent visit so\n that it can recognize you and remember things like your user preferences. You can find more detailed\n information about cookies and how they work at http://www.aboutcookies.org/.\n

\n

Whenever you use this Website, information may be collected through the use of cookies and other\n technologies. By using this Website you agree to our use of all such technologies, as described in this\n Cookie Notice.\n

\n

What cookies do we use and why?

\n

Some of the cookies we use are necessary to enable you to move around the Website and use its features\n such as accessing secure areas that may contain content for registered users.\n

\n

We also use functional cookies to record information about the choices you have made and to allow us to\n tailor this Website to our users; for example, to remember your language or region or that you have\n already completed a survey. This information is usually anonymized and is not used for any purpose\n unrelated to this Website.\n

\n

We or our service providers also use analytic services to help us understand how effective our content\n is, what interests our users have, and to improve how this Website works. In addition, we use web beacons,\n tracking pixels and similar services to understand more about the visitors to this Website, and to count\n visitor numbers and performance cookies to track how many individual users access this Website and how\n often. This information is used for statistical purposes and to improve how this Website works and it is\n not our intention to use such information to personally identify any user. However, if at any time you\n register and sign into this Website we may combine such data with information from our web analytic\n services and cookies to analyze how you use this Website in more detail. This Website does not use\n targeting cookies to deliver targeted advertising on this Website.\n

\n

How to control cookies?

\n

By using this Website, you agree that we can place cookies on your computer or device as explained above.\n However, you can control and manage cookies in various ways. Please bear in mind that removing or blocking\n cookies can impact your user experience, and parts of this Website may no longer be fully accessible.\n

\n

If you do not accept the use of these cookies please disable them by changing your browser settings so\n that cookies from this Website cannot be placed on your computer or mobile device.\n

\n

Email communications

\n

We may also use tracking technologies to determine whether you have read, clicked on, or forwarded\n certain email communications we send to you so that we can make our communications more helpful and\n interesting. If you do not wish us to confirm whether you have opened, clicked on or forwarded our\n communications, you will need to unsubscribe, as it is not possible for us to send these emails without\n tracking enabled. Registered subscribers can update their communication preferences at any time by contacting us, or you can unsubscribe following the instructions in the individual\n email communications you receive from us.\n

\n

We may modify or amend this Cookie Notice from time to time at our discretion. When we make changes to\n this notice, we will amend the revision date at the top of this page, and such modified or amended Cookie\n Notice shall be effective as to you and your information as of that revision date. We encourage you to\n periodically review this Cookie Notice to be informed about how we are using cookies.\n

\n
\n
\n \n \n \n
\n \n );\n}\n\nexport default CookieNotice;","import React, {useState} from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\nimport PrivacyStatement from \"./privacyStatement.component\";\nimport CookieNotice from \"./cookieNotice.component\";\nimport PropTypes from \"prop-types\";\n\nconst TermsofUse = ({ linkTitle }) => {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n \n { linkTitle }\n \n\n \n \n Terms of Use\n \n \n
\n
\n
\n

Last revised: June 16, 2020

\n

Introduction

\n

These Terms of Use apply to NorthcrossGroup.com or the NCG practice specific website that you were viewing before clicking on these Terms of Use. Such individual website is referred to in these Terms of Use as \"this Website.\" Northcross Group is providing this Website and is referred to in these Terms of Use as \"we,\" \"us,\" or \"our.\"\n

\n

By using this Website, you are agreeing to these Terms of Use. If you do not agree to these Terms of Use, then you are not allowed to use this Website and should immediately terminate such usage.\n

\n

Use of Content; Restrictions; Privacy Statement

\n

Unless otherwise indicated in the relevant content, and on the condition that you comply with all of your obligations under these Terms of Use, you are authorized to view, copy, print, and distribute (but not modify) the content on this Website; provided that (i) such use is for informational, noncommercial purposes only, and (ii) any copy of the content that you make must include the copyright notice or other attribution associated with the content.\n

\n

You are not authorized to copy or use any software, proprietary processes, or technology embodied or described in this Website.\n

\n

You will comply with all applicable laws in accessing and using this Website.\n

\n

You acknowledge that we may use your personal information and data and any confidential information you provide to us according to our Privacy Statement and its accompanying Cookie Notice, which are incorporated herein by this reference. By using this Website, you are also agreeing to the terms of our and , including any obligations imposed on you therein.\n

\n

Intellectual Property Rights; No use of Northcross Group names or logos

\n

Unless otherwise indicated, the content on this Website is provided by us. This Website and its contents are protected by copyright, trademark, and other laws of the United States and/or foreign countries. We and our licensors reserve all rights not expressly granted in these Terms of Use.\n

\n

“Northcross Group,” “NCG,” the NCG logo, the Northcross Group logo, and local language variants of the foregoing trademarks, and certain product names that appear on this Website (collectively, the “Northcross Group Marks”), are trademarks or registered trademarks of Northcross Group. Except as expressly provided in these Terms of Use or as expressly authorized in writing by the relevant trademark owner, you shall not use any Northcross Group Marks either alone or in combination with other words or design elements, including, in any press release, advertisement, or other promotional or marketing material or media, whether in written, oral, electronic, visual, or any other form.\n

\n

References to other parties trademarks on this Website are for identification purposes only and do not indicate that such parties have approved this Website or any of its contents. These Terms of Use do not grant you any right to use the trademarks of other parties.\n

\n

Disclaimers and Limitations of Liability

\n

THIS WEBSITE (INCLUDING, WITHOUT LIMITATION, ANY CONTENT OR OTHER PART THEREOF) CONTAINS GENERAL INFORMATION ONLY, AND WE ARE NOT, BY MEANS OF THIS WEBSITE, RENDERING PROFESSIONAL ADVICE OR SERVICES. BEFORE MAKING ANY DECISION OR TAKING ANY ACTION THAT MIGHT AFFECT YOUR FINANCES OR BUSINESS, YOU SHOULD CONSULT A QUALIFIED PROFESSIONAL ADVISOR.\n

\n

THIS WEBSITE IS PROVIDED AS IS, AND WE MAKE NO EXPRESS OR IMPLIED REPRESENTATIONS OR WARRANTIES REGARDING IT. WITHOUT LIMITING THE FOREGOING, WE DO NOT WARRANT THAT THIS WEBSITE WILL BE SECURE, ERROR-FREE, FREE FROM VIRUSES OR MALICIOUS CODE, OR WILL MEET ANY PARTICULAR CRITERIA OF PERFORMANCE OR QUALITY. WE EXPRESSLY DISCLAIM ALL IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY, TITLE, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, COMPATIBILITY, SECURITY, AND ACCURACY.\n

\n

YOUR USE OF THIS WEBSITE IS AT YOUR OWN RISK AND YOU ASSUME FULL RESPONSIBILITY AND RISK OF LOSS RESULTING FROM YOUR USAGE, INCLUDING, WITHOUT LIMITATION, WITH RESPECT TO LOSS OF SERVICE OR DATA. WE WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES OR ANY OTHER DAMAGES WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, STATUTE, TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE), OR OTHERWISE, RELATING TO OR ARISING OUT OF THE USE OF THIS WEBSITE, EVEN IF WE KNEW, OR SHOULD HAVE KNOWN, OF THE POSSIBILITY OF SUCH DAMAGES.\n

\n

CERTAIN LINKS ON THIS WEBSITE MAY LEAD TO WEBSITES, RESOURCES, OR TOOLS MAINTAINED BY THIRD PARTIES OVER WHOM WE HAVE NO CONTROL. WITHOUT LIMITING ANY OF THE FOREGOING, WE MAKE NO EXPRESS OR IMPLIED REPRESENTATIONS OR WARRANTIES WHATSOEVER REGARDING SUCH WEBSITES, RESOURCES, AND TOOLS, AND LINKS TO ANY SUCH WEBSITES, RESOURCES, AND TOOLS SHOULD NOT BE CONSTRUED AS AN ENDORSEMENT OF THEM OR THEIR CONTENT BY US.\n

\n

THE ABOVE DISCLAIMERS AND LIMITATIONS OF LIABILITY ARE APPLICABLE TO THE FULLEST EXTENT PERMITTED BY LAW, WHETHER IN CONTRACT, STATUTE, TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE), OR OTHERWISE.\n

\n

Additional Terms

\n

If any portion of these Terms of Use is invalid or unenforceable in any jurisdiction, then (i) in that jurisdiction it shall be re-construed to the maximum effect permitted by law in order to effect its intent as nearly as possible, and the remainder of these Terms of Use shall remain in full force and effect, and (ii) in every other jurisdiction, all of these Terms of Use shall remain in full force and effect.\n

\n

We may revise these Terms of Use at any time in our sole discretion by posting such revised Terms of Use at the Terms of Use link (i.e., this webpage that you are currently viewing) or elsewhere in this Website. Such revisions shall be effective as to you upon posting, unless explicitly stated by us. It is your responsibility to be aware of any such revised Terms of Use by checking this webpage. Your continued use of this Website following changes to these Terms of Use constitutes your agreement to the revised Terms of Use.\n

\n
\n
\n
\n
\n \n \n \n
\n \n );\n}\n\nTermsofUse.propTypes = {\n linkTitle: PropTypes.string.isRequired\n};\n\n// Set a default value for any required props.\nTermsofUse.defaultProps = {\n linkTitle: 'Terms of Use',\n};\n\nexport default TermsofUse;\n","import React, { Component } from \"react\";\nimport AuthService from \"../../services/auth.service\";\nimport constants from './../../constants.js'\nimport TermsofUse from \"../termsofUse.component\";\n\nexport default class Register extends Component {\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.validateForm = this.validateForm.bind(this);\n\n this.state = {\n firstName: \"\",\n lastName: \"\",\n organization: \"\",\n email: \"\",\n password: \"\",\n verifyPassword: \"\",\n terms: false,\n message: \"\",\n submitted: false,\n hasFirstNameError: true,\n hasLastNameError: true,\n hasOrganizationError: true,\n hasEmailError: true,\n hasPasswordError: true,\n hasTermError: true,\n passwordErrorMsg:'',\n hasVerifyPasswordError:true,\n validate: false,\n };\n }\n toggleValidating(validate) {\n this.setState({ validate });\n }\n\n validateForm(e) {\n const password_reg = constants.Password_Validation_Regex;\n const email_reg = constants.Email_Validation_Regex;\n\n e.preventDefault();\n this.toggleValidating(true);\n\n let validationErrors={};\n if(this.state.firstName.length === 0) {\n validationErrors.firstNameError = true;\n }\n if(this.state.lastName.length === 0) {\n validationErrors.lastNameError = true;\n }\n if(this.state.organization.length === 0) {\n validationErrors.organizationError = true;\n }\n if(this.state.email.length === 0 || !email_reg.test(String(this.state.email).toLowerCase())) {\n validationErrors.emailError = true;\n }\n if(this.state.password.length < 12 || !password_reg.test(String(this.state.password))) {\n validationErrors.passwordError = true;\n }\n if(this.state.password.length < 12 || this.state.verifyPassword !== this.state.password) {\n validationErrors.verifyPasswordError = true;\n }\n if(this.state.terms === false) {\n validationErrors.termError = true;\n }\n\n this.setState(validationErrors);\n \n return Object.keys(validationErrors).length;\n \n }\n\n componentDidMount() {\n\n }\n \n // handle input change\n handleInputChange(event) {\n const target = event.target;\n const value = target.name === 'terms' ? target.checked : target.value;\n const name = target.name;\n\n this.setState({\n [name]: value\n });\n }\n\n // handle login\n handleSubmit(e) {\n e.preventDefault();\n\n // validateForm returns the number of problems found.\n if(this.validateForm(e)) {\n return false;\n }\n \n this.setState({\n message: \"\",\n submitted: true\n });\n\n let data = {\n firstName: this.state.firstName,\n lastName: this.state.lastName,\n organization: this.state.organization,\n email: this.state.email,\n password: this.state.password\n }\n AuthService.register(data)\n .then(\n res => {\n this.setState({\n message: \"Check your email for a confirmation link\",\n submitted: true\n });\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n message: resMessage\n });\n }\n );\n }\n\n renderForm() {\n const { validate, account, password, accountErrorMsg, passwordErrorMsg } = this.state;\n const password_reg = constants.Password_Validation_Regex;\n const email_reg = constants.Email_Validation_Regex;\n return (\n
\n
\n
\n { if(e.target.value === '') this.setState({firstNameError:true}); else this.setState({firstNameError:false}); this.setState({'firstName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({firstNameError:true}); else this.setState({firstNameError:false}); this.setState({'firstName': e.target.value})}}\n />\n
First Name is required
\n
\n
\n { if(e.target.value === '') this.setState({lastNameError:true}); else this.setState({lastNameError:false}); this.setState({'lastName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({lastNameError:true}); else this.setState({lastNameError:false}); this.setState({'lastName': e.target.value})}}\n />\n
Last Name is required
\n
\n
\n { if(e.target.value === '') this.setState({organizationError:true}); else this.setState({organizationError:false}); this.setState({'organization': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({organizationError:true}); else this.setState({organizationError:false}); this.setState({'organization': e.target.value})}}\n />\n
Organization is required
\n
\n
\n { if(e.target.value === '' || !email_reg.test(String(e.target.value).toLowerCase())) this.setState({emailError:true}); else this.setState({emailError:false}); this.setState({'email': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '' || !email_reg.test(String(e.target.value).toLowerCase())) this.setState({emailError:true}); else this.setState({emailError:false}); this.setState({'email': e.target.value})}}\n />\n
Please enter a valid email address
\n
\n
\n { \n if(e.target.value === ''\n || e.target.value.length < 12\n || !password_reg.test(String(e.target.value))) \n this.setState({passwordError:true}); \n else \n this.setState({passwordError:false}); \n this.setState({'password': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '' || !password_reg.test(String(e.target.value))) this.setState({passwordError:true}); else this.setState({passwordError:false}); this.setState({'password': e.target.value})}}\n />\n
A valid password must be 12-20 characters in length, include at least one of each: a number, a lower case letter, an upper case letter, and a punctuation symbol
\n
\n
\n {\n if(\n e.target.value === ''\n || e.target.value.length < 12\n || e.target.value !== this.state.password\n )\n this.setState({verifyPasswordError:true});\n else\n this.setState({verifyPasswordError:false});\n this.setState({'verifyPassword': e.target.value});\n }}\n onBlur={(e) =>{\n if(e.target.value === ''\n || e.target.value.length < 12\n || e.target.value !== this.state.password\n )\n this.setState({verifyPasswordError:true});\n else\n this.setState({verifyPasswordError:false});\n this.setState({'verifyPassword': e.target.value})\n }}\n />\n
Password and confirm password do not match
\n
\n
\n
\n {\n if(\n e.target.checked === false\n )\n this.setState({termError:true});\n else\n this.setState({termError:false});\n this.setState({'terms': e.target.checked});\n }}\n onBlur={(e) =>{\n if(\n e.target.checked === false\n )\n this.setState({termError:true});\n else\n this.setState({termError:false});\n this.setState({'terms': e.target.checked});\n }}\n />\n \n
You must agree to the terms of use
\n
\n
\n\n
\n \n
\n
\n
\n );\n }\n // ...\n\n render() {\n return (\n
\n
\n
\n {this.state.submitted === false ? (\n
\n {this.renderForm()}\n
\n ):null}\n {this.state.message && (\n
\n
\n {this.state.message}\n
\n
\n )}\n
\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\n\nimport AuthService from \"../../services/auth.service\";\n\nexport default class Verify extends Component {\n constructor(props) {\n super(props);\n this.verifyKey = this.verifyKey.bind(this);\n\n this.state = {\n userId: \"\",\n key: \"\",\n message: \"Verifying key\",\n verified: false\n };\n }\n\n componentDidMount() {\n this.setState({\n userId: this.props.match.params.userId,\n key: this.props.match.params.key,\n }, () => {\n this.verifyKey();\n });\n \n }\n\n verifyKey(){\n AuthService.verifyEmail(this.state.userId, this.state.key)\n .then(\n res => {\n this.setState({\n verified:true,\n message: \"Your email has been verified successfully.\"\n });\n this.props.history.push(\"/login?verify\");\n window.location.reload();\n },\n error => {\n this.props.history.push(\"/login?invalid\");\n window.location.reload();\n }\n );\n\n }\n // ...\n\n render() {\n return (\n
\n
\n );\n }\n}\n","export default function authHeader() {\n const user = JSON.parse(sessionStorage.getItem('user'));\n\n if (user && user.accessToken) {\n return { 'x-access-token': user.accessToken };\n } else {\n return {};\n }\n}","import http from \"../http-common\";\nimport authHeader from './auth-header';\n\nclass UserDataService {\n getUsersByOrg(id) {\n return http.get(`/users/${id}/organization`, { headers: authHeader() });\n }\n\n getUser(id) {\n return http.get(`/users/${id}`, { headers: authHeader() });\n }\n\n updateUser(user) {\n return http.put(`/users/${user.id}`, user, { headers: authHeader() });\n }\n\n newUser(user) {\n return http.post(`/users`, user, { headers: authHeader() });\n }\n\n updatePassword(user){\n return http.put(`/users/${user.id}/${user.key}/update`, user);\n }\n\n checkResetLink(user){\n return http.put(`/users/${user.userId}/${user.key}/check`, user);\n }\n\n}\n\nexport default new UserDataService();\n","import React, { Component } from \"react\";\n\nimport UserDataService from \"../../services/user.service\";\nimport constants from \"../../constants\";\n\nexport default class ResetPassword extends Component {\n constructor(props) {\n super(props);\n this.onChangePassword = this.onChangePassword.bind(this);\n this.onChangeRepeatPassword = this.onChangeRepeatPassword.bind(this);\n this.updatePassword = this.updatePassword.bind(this);\n this.validateForm = this.validateForm.bind(this);\n this.checkLink = this.checkLink.bind(this);\n\n this.state = {\n userId: \"\",\n key: \"\",\n message: \"\",\n password: \"\",\n repeatPassword: \"\",\n hasPasswordError: true,\n hasVerifyPasswordError: true,\n validate: false,\n validLink: false\n };\n\n \n \n }\n\n toggleValidating(validate) {\n this.setState({ validate });\n }\n \n validateForm(e) {\n e.preventDefault();\n this.toggleValidating(true);\n const {\n passwordError,\n verifyPasswordError,\n } = this.state;\n if (\n !passwordError &&\n !verifyPasswordError &&\n this.state.password !== ''\n ) {\n this.setState({\n message: \"\",\n submitted: true\n });\n\n let data = {\n password: this.state.password\n }\n \n this.updatePassword();\n }\n else {\n this.setState({passwordError:true, verifyPasswordError:true})\n }\n }\n\n componentDidMount() {\n this.setState({\n userId: this.props.match.params.userId,\n key: this.props.match.params.key,\n });\n this.checkLink();\n }\n\n checkLink(){\n let data = {\n userId: this.props.match.params.userId,\n key: this.props.match.params.key,\n }\n UserDataService.checkResetLink(data)\n .then(\n res => {\n this.setState({\n validLink: true\n })\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n message: resMessage\n });\n }\n );\n }\n\n // change password\n onChangePassword(e) {\n this.setState({\n password: e.target.value\n });\n }\n\n // change repeat password\n onChangeRepeatPassword(e) {\n this.setState({\n repeatPassword: e.target.value\n });\n }\n\n updatePassword() {\n let user = {\n id: this.state.userId,\n key: this.state.key,\n password: this.state.password\n }\n UserDataService.updatePassword(user)\n .then(\n res => {\n this.props.history.push(\"/login?reset\");\n window.location.reload();\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n message: resMessage\n });\n }\n );\n }\n\n // ...\n\n render() {\n const { validate, account, password, accountErrorMsg, passwordErrorMsg } = this.state;\n const password_reg = constants.Password_Validation_Regex;\n\n return (\n
\n
\n
\n
\n
\n {this.state.message && (this.state.message != \"\") ? (\n
\n
\n {this.state.message}\n
\n
\n ) : null}\n {this.state.validLink ? (\n
\n Please enter a new password and click the button to submit.\n
\n {\n if(e.target.value === ''\n || e.target.value.length < 12\n || !password_reg.test(String(e.target.value)))\n this.setState({passwordError:true});\n else\n this.setState({passwordError:false});\n this.setState({'password': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '' || !password_reg.test(String(e.target.value))) this.setState({passwordError:true}); else this.setState({passwordError:false}); this.setState({'password': e.target.value})}}\n />\n
A valid password must be 12-20 characters in length, include at least one of each: a number, a lower case letter, an upper case letter, and a punctuation symbol
\n
\n
\n {\n if(\n e.target.value === ''\n || e.target.value.length < 12\n || e.target.value !== this.state.password\n )\n this.setState({verifyPasswordError:true});\n else\n this.setState({verifyPasswordError:false});\n this.setState({'verifyPassword': e.target.value});\n }}\n onBlur={(e) =>{\n if(e.target.value === ''\n || e.target.value.length < 12\n || e.target.value !== this.state.password\n )\n this.setState({verifyPasswordError:true});\n else\n this.setState({verifyPasswordError:false});\n this.setState({'verifyPassword': e.target.value})\n }}\n />\n
Password and confirm password do not match
\n
\n
\n \n
\n
\n ):null}\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Switch, Route, Link } from \"react-router-dom\";\n\nimport AuthService from \"../../services/auth.service\";\nimport UserDataService from \"../../services/user.service\";\n\nexport default class ResetPassword extends Component {\n constructor(props) {\n super(props);\n this.onChangeEmail = this.onChangeEmail.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n\n this.state = {\n email: \"\",\n message: \"\",\n submitted: \"\"\n };\n }\n\n componentDidMount() {\n\n }\n\n // change password\n onChangeEmail(e) {\n this.setState({\n email: e.target.value\n });\n }\n\n // submit reset request\n onSubmit() {\n //call auth service\n let body ={\n email: this.state.email\n }\n AuthService.forgotPassword(body)\n .then(res => {\n this.setState({\n message: \"Check your email for a link to reset your password.\",\n submitted: true\n });\n })\n .catch(err => {\n this.setState({\n message: \"error, contact the website administrator for help\",\n submitted: false\n });\n })\n \n }\n\n // ...\n\n render() {\n return (\n
\n
\n
\n
\n
\n {this.state.message && (this.state.message != \"\") ? (\n
\n
\n {this.state.message}\n
\n
\n ) : null}\n {this.state.submitted != true ? (\n
\n Please enter your email address below. If it is found in the system you will receive a link to reset your password.\n
\n \n
\n
\n \n
\n
\n ) : null}\n\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Switch, Route, Link } from \"react-router-dom\";\n\nimport AuthService from \"../../services/auth.service\";\n\nexport default class Logout extends Component {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n AuthService.logout();\n this.props.history.push(\"/?logout\");\n window.location.reload();\n }\n\n render() {\n return null;\n }\n}\n","import http from \"../http-common\";\nimport authHeader from './auth-header';\n\nclass OrganizationDataService {\n\n getOrgInfo(data) {\n return http.get(\"/organizations/\"+ data.organizationId + \"/info\", { headers: authHeader() });\n }\n\n submit(data) {\n return http.put(\"/organizations/\"+ data.id + \"/submit\", data, { headers: authHeader() });\n }\n\n getCompletionByOrg(data) {\n return http.get(\"/organizations/\"+ data.organizationId + \"/completion\", { headers: authHeader() });\n }\n\n getLevelByOrg(data){\n return http.get(\"/organizations/\"+ data.organizationId + \"/level\", { headers: authHeader() });\n }\n\n updateQuestionnaireState(organizationId){\n return http.get(\"/organizations/\"+ organizationId + \"/state\", { headers: authHeader() });\n }\n\n getStarted(data){\n return http.put(\"/organizations/\"+ data.organizationId + \"/getStarted\", data, { headers: authHeader() });\n }\n\n}\n\nexport default new OrganizationDataService();\n","import http from \"../http-common\";\nimport authHeader from './auth-header';\n\nclass AnswerDataService {\n getAllByDomain(id, organizationId) {\n return http.get(`/answers/domain/${id}/${organizationId}`, { headers: authHeader() });\n }\n\n updateAnswer(answer) {\n return http.put(`/answers/${answer.id}`, answer, { headers: authHeader() });\n }\n\n}\n\nexport default new AnswerDataService();\n","import React, { Component } from \"react\";\nimport { Button } from 'react-bootstrap';\n\nimport OrganizationDataService from \"../services/organization.service\";\nimport AnswerDataService from \"../services/answer.service\";\nimport AuthService from \"../services/auth.service\";\n\nconst PROCESS_DOMAIN = 18;\n\nexport default class Questionnaire extends Component {\n constructor(props) {\n super(props);\n this.toggleQuestion = this.toggleQuestion.bind(this);\n this.updateQuestionnaireState = this.updateQuestionnaireState.bind(this);\n this.getOrgInfo = this.getOrgInfo.bind(this);\n this.getCompletion = this.getCompletion.bind(this);\n\n this.state = {\n questionnaire: [],\n currentDomain: -1,\n currentUser: AuthService.getCurrentUser(),\n orgInfo: \"\",\n totalDomains: \"\",\n showMessage: true\n };\n }\n\n // runs on page's first load\n componentDidMount() {\n this.updateQuestionnaireState();\n this.getOrgInfo();\n }\n\n // gets the organization info of the current logged in user\n getOrgInfo() {\n OrganizationDataService.getOrgInfo({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n orgInfo: response.data.data[0],\n });\n })\n }\n\n // gets the number of completed domains\n getCompletion(){\n let data = {\n completed: 0,\n remaining: this.state.totalDomains\n };\n if(this.state.questionnaire){\n this.state.questionnaire.forEach(domain => {\n if(domain.percentComplete === 1){\n data.completed++;\n }\n });\n }\n data.remaining = this.state.totalDomains - data.completed;\n return data;\n }\n\n // submits the questionnaire\n submitQuestionnaire() {\n let orgInfo = this.state.orgInfo;\n let org = {\n id: orgInfo.id,\n submitted: true,\n submittedUser: this.state.currentUser.id\n }\n OrganizationDataService.submit(org)\n .then(response => {\n orgInfo.submitted = true;\n this.setState({\n orgInfo: orgInfo\n })\n this.props.history.push(\"/summary\");\n window.location.reload();\n })\n }\n\n // gets the current state of the questionnaire (domains, questions, answers)\n updateQuestionnaireState() {\n OrganizationDataService.updateQuestionnaireState(this.state.currentUser.organizationId)\n .then(response => {\n let currentDomain = {};\n if(this.state.currentDomain === -1){\n currentDomain = response.data.data[0];\n }\n else{\n currentDomain = response.data.data.find(domain => domain.id === this.state.currentDomain.id);\n } \n this.setState({\n questionnaire: response.data.data,\n totalDomains: response.data.data.length,\n currentDomain: currentDomain\n });\n })\n }\n\n // sets the active domain, called from navigation\n setActiveDomain(domain) {\n this.setState({\n currentDomain: domain,\n });\n window.scrollTo(0, 0);\n }\n\n // sets the next domain to be active\n loadNextDomain(){\n let index = this.state.questionnaire.findIndex(d => d.id === this.state.currentDomain.id);\n if(index < this.state.questionnaire.length){\n this.setActiveDomain(this.state.questionnaire[index + 1]);\n }\n }\n\n // sets the previous domain to be active\n loadPreviousDomain(){\n let index = this.state.questionnaire.findIndex(d => d.id === this.state.currentDomain.id);\n if(index > 0){\n this.setActiveDomain(this.state.questionnaire[index -1]);\n }\n }\n\n // updates or creates an answer's value\n toggleQuestion(question, value) {\n let answerId = null;\n if(question.answers.length > 0){\n answerId = question.answers[0].id\n }\n let answer = {\n id: answerId,\n domainId: question.domainId,\n questionId: question.id,\n value: value,\n organizationId: this.state.currentUser.organizationId\n }\n AnswerDataService.updateAnswer(answer)\n .then(response => {\n this.updateQuestionnaireState();\n })\n }\n\n //render yes/no buttons\n renderButtons(question, type) {\n if(question.id === PROCESS_DOMAIN) type += \" process\";\n let value = 0;\n if(question.answers.length > 0){\n value = question.answers[0].value;\n }\n switch (value) {\n case 0:\n return (\n
\n

{question.text}

\n
\n this.toggleQuestion(question, 1)}>{' '}\n this.toggleQuestion(question, 2)}>{' '}\n
\n
\n );\n case 1:\n return (\n
\n

{question.text}

\n
\n this.toggleQuestion(question, 1)}>{' '}\n this.toggleQuestion(question, 2)}>{' '}\n
\n
\n );\n case 2:\n return (\n
\n

{question.text}

\n
\n this.toggleQuestion(question, 1)}>{' '}\n this.toggleQuestion(question, 2)}>{' '}\n
\n
\n );\n default:\n return 'error displaying question buttons';\n }\n }\n\n // render navigation buttons\n renderNavButton(domain, domainId) {\n let completion = domain.percentComplete;\n let className = \"domain-tile\";\n if (completion === 1) {\n className += \" complete\"\n }\n if (this.state.currentDomain.code === domain.code) {\n className += \" active\"\n }\n return (\n this.setActiveDomain(domain)}\n key={domainId}\n >\n {domain.code}\n \n {domain.name}\n \n )\n }\n\n // render component\n render() {\n // get completion for submit button\n let completion = this.getCompletion();\n\n return (\n
\n {/* Navigation */}\n
\n
    \n {this.state.questionnaire &&\n this.state.questionnaire.map((domain, domainId) => (\n this.renderNavButton(domain, domainId)\n ))}\n
\n
\n

{this.state.currentDomain.name}

\n
\n
\n
\n {/* Question Area */}\n
\n {/* info button */}\n
\n

i

\n
\n \n
{this.state.currentDomain.code} - {this.state.currentDomain.name}
\n

\n \n
\n
\n
\n {/* first question */}\n {this.state.currentDomain.questions ?\n this.renderButtons(this.state.currentDomain.questions[0], \"primary container\") : null}\n {/* secondary questions */}\n {this.state.currentDomain.questions &&\n this.state.currentDomain.questions[0].domainId !== PROCESS_DOMAIN ?\n (\n
\n {this.state.currentDomain.questions[0].answers.length > 0 &&\n this.state.currentDomain.questions[0].answers[0].value === 1 &&\n this.state.currentDomain.questions.slice(1).map((question, questionId) => (\n
\n {this.renderButtons(question, \"secondary\")}\n
\n ))}\n
\n ) : (\n
\n {this.state.currentDomain.questions &&\n this.state.currentDomain.questions.slice(1).map((question, questionId) => (\n
\n {this.renderButtons(question, \"primary container\")}\n
\n ))}\n
\n )}\n
\n
\n {/* Submit Questionnaire */}\n {completion.completed === this.state.totalDomains && this.state.currentUser && this.state.currentUser.role === \"fullcontrol\" ? (\n
\n {' '}\n
\n\n ):\n\n this.state.showMessage === true ? (\n
\n \n
Remember: There are no right or wrong answers…
\n\n

The questionnaire is designed to capture the cybersecurity things you have in place today compared to the\n CMMC model.

\n
\n ): null \n \n }\n {/* Bottom Arrows */}\n
\n {this.state.currentDomain !== -1 &&\n this.state.currentDomain.id > 1 ? (\n \n ):null}\n {this.state.currentDomain !== -1 &&\n this.state.currentDomain.id < PROCESS_DOMAIN ? (\n \n ):null}\n
\n
\n );\n }\n}\n","import React, {useState} from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\nfunction UnderstandingResults() {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n \n

Understanding Your Results

\n
\n\n \n \n Understanding Your Results\n \n \n
\n

Understanding the Questionnaire Results

\n

Your questionnaire responses are used to project your current state Maturity Level based on the CMMC model. The projected level is based on the Domains, Capabilities, and Processes your responses indicated are in place at your organization.

\n\n

Your Current Cybersecurity Safeguards Compared to the CMMC Model

\n

The CMMC model is made up of seventeen (17) Domains, forty-three (43) Capabilities, and one hundred seventy-one (171) Practices. Practices are components of Capabilities, which are in turn components of Domains. Individual Practices are required by Maturity Level. Capabilities and Domains can span multiple Maturity Levels.

\n\n

Under the CMMC model, six Domains are required to be performed for Maturity Level 1. To reach level 2, nine additional Domains are required. For Level 3-5, all 17 Domains are required.

\n\n

CMMC Model Capabilities and Practices

\n

Each CMMC Domain is comprised of one or more Capabilities. Capabilities are comprised of Practices that are required for each Maturity Level. The 171 Practices are required by Maturity Level as follows:

\n
    \n
  • Level 1 = 17 Practices
  • \n
  • Level 2 = 55 Practices
  • \n
  • Level 3 = 58 Practices
  • \n
  • Level 4 = 26 Practices
  • \n
  • Level 5 = 15 Practices
  • \n
\n\n

The CMMC model requires certain Processes are in place and performed to achieve Maturity Levels 2-5. Maturity Level 1 only focuses on the performance of the first seventeen practices without requiring any specific processes. The CMMC model requirements for Processes are as follows:

\n
    \n
  • \tLevel 2 requires documentation covering each Domain with policies and procedures.
  • \n
  • Level 3 requires management through plans for each Domain.
  • \n
  • Level 4 requires effectiveness reviews through measures for each Domain.
  • \n
  • Level 5 requires continuous improvements through standardization and optimization for each Domain across all applicable organizational units.
  • \n
\n\n

Questionnaire Maturity Level Projections

\n

Your Maturity Level Projection is based on the Domains, Capabilities, and Processes you responded are in place in your organization. The possible values you may have for your Maturity Level Projection are:

\n
    \n
  • Pre-Level 1 (not yet able to meet certification)
  • \n
  • Level 1
  • \n
  • Level 2
  • \n
  • Level 3
  • \n
  • Level 4
  • \n
  • Level 5
  • \n
\n\n

To reach a given Maturity Level, you must satisfy all the requirements of that Level plus all the requirements for preceding Levels.

\n\n

For example, to reach Maturity Level 3, you must satisfy all the Maturity Level 1 and 2 requirements in addition to those of Level 3. If you implemented items required for Levels 4 or 5, they do not count towards your accomplishment of Level 3.

\n\n

In addition to your projected Maturity Level, your total number of Capabilities and a list of Processes based on your responses is also provided. A link to view all your response details is also provided.

\n\n

The questionnaire does not ask about specific Practices, leaving these to be validated as part of a subsequent assessment that NCG can provide to independently verify your current state.

\n\n

Next Steps after completing the Baseline Questionnaire

\n

The Baseline Questionnaire captures your current state view of your organization’s cybersecurity compared to the CMMC model. That view should be verified and assessed to determine your ability to be successful with the actual certification process.

\n\n

NCG uses your Baseline Questionnaire results to streamline and focus the assessment process. This third-party assessment will examine your level of readiness for certification process. Depending on where you currently stand, NCG will develop a roadmap for you to get ready for certification or to accomplish a higher Maturity Level.

\n\n
\n
\n \n \n \n
\n \n );\n}\n\nexport default UnderstandingResults;","import React, { Component } from \"react\";\n\nimport AuthService from \"../services/auth.service\";\nimport OrganizationDataService from \"../services/organization.service\";\nimport UnderstandingResults from \"./understandingResults.component.js\";\n\nexport default class Summary extends Component {\n constructor(props) {\n super(props);\n\n this.getOrgInfo = this.getOrgInfo.bind(this);\n this.getStarted = this.getStarted.bind(this);\n\n this.state = {\n maturity: 0,\n questionnaireState: \"\",\n currentUser: AuthService.getCurrentUser(),\n orgInfo: \"\",\n completion: \"\"\n };\n this.getMaturityLevel();\n this.getOrgInfo();\n }\n componentDidMount() {\n }\n\n renderLevel(maturity) {\n let text = \"\";\n if(this.state.questionnaireState){\n \n if(maturity === 0){\n let level_stats = this.state.questionnaireState.levels[1];\n\n let missingRequirementsText = '';\n if(level_stats.domains.missing.length > 0) {\n text = \"Pre-Level 1 (Missing \" + level_stats.domains.missing.length + \" of \" + level_stats.domains.count + \" Level 1 Domains)\";\n missingRequirementsText = <>Maturity Level 1 Missing Domains:
    {level_stats.domains.missing.map(t =>
  • {t}
  • )}
;\n }\n // all the domains are complete!\n else {\n text = \"Pre-Level 1 (Missing \" + level_stats.capabilities.missing.length + \" of \" + level_stats.capabilities.count + \" Level 1 Capabilities)\";\n missingRequirementsText =<>Maturity Level 1 Missing Capabilities:
    {level_stats.capabilities.missing.map(t =>
  • {t}
  • )}
;\n }\n\n\n return ;\n }\n else{\n text = \"Level \" + maturity;\n }\n }\n\n return ;\n }\n\n getProcessesText(processes) {\n console.log(this.state.questionnaireState);\n let processesText = \"\";\n let processValues = [];\n if(processes) {\n\n if (processes.files === true) {\n processValues.push(\"Policies & Procedures\");\n }\n if (processes.resourcePlan === true) {\n processValues.push(\"Resource Plans\");\n }\n if (processes.assessmentPlan === true) {\n processValues.push(\"Reviews & Measurements\");\n }\n if (processes.improvementPlan === true) {\n processValues.push(\"Continuous Improvement Processes\");\n }\n\n if (processValues.length) {\n for (let i = 0; i < processValues.length; i++) {\n if (i) {\n processesText += \", \";\n }\n processesText += processValues[i];\n }\n processesText += \" in place\";\n } else {\n processesText = 'None';\n }\n } \n return processesText;\n }\n\n getCapabilitiesText(maturity) {\n if(maturity == 0 ) {\n //If the questionnaire only reached \"pre-level 1\" treat this as-if it is level 1.\n maturity = 1;\n }\n\n if (this.state.questionnaireState) {\n let totalCompleted = 0;\n let levels = this.state.questionnaireState.levels; \n // each level has additional questions to complete. Therefore iterating up to the current maturity level is required\n // to determine how many total questions have been achieved for that level.\n\n let totalCapabilities = 0;\n\n Object.keys(levels).forEach((key) => {\n let item = levels[key];\n totalCapabilities += item.capabilities.completed;\n if(key <= maturity ) {\n totalCompleted += item.capabilities.completed; \n }\n });\n \n // for(let i = 1; i <= maturity; i++) {\n // totalCompleted += levels[i].capabilities.completed;\n // }\n\n return ()\n }\n return null;\n }\n\n\n getStepOneText(maturity) {\n switch (maturity) {\n case 0:\n return (\n \n );\n case 5:\n return (\n \n );\n default:\n return (\n \n );\n }\n }\n\n getMaturityLevel() {\n OrganizationDataService.getLevelByOrg({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n maturity: response.data.data.maturity,\n questionnaireState: response.data.data\n });\n })\n }\n\n getOrgInfo() {\n OrganizationDataService.getOrgInfo({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n orgInfo: response.data.data[0],\n });\n })\n }\n\n getStarted(){\n let data = {\n organizationId: this.state.currentUser.organizationId,\n organizationName: this.state.orgInfo.name,\n userName: this.state.currentUser.name,\n userEmail: this.state.currentUser.email\n }\n OrganizationDataService.getStarted(data)\n .then(response => {\n this.getOrgInfo();\n })\n }\n\n render() {\n return (\n
\n
\n \n
\n\n
\n
\n
\n
\n
\n

i

\n
\n \n

The Maturity Level Projection is based on your response to which domains, capabilities, and processes are performed in your organization.\n

\n

In order to progress to the next Maturity Level, all the requirements of the previous levels must be met.\n

\n
\n
\n
\n

questionnaire maturity level projection:

\n
\n
\n {this.renderLevel(this.state.maturity)}\n
\n
\n
\n

projected level of the 5 CMMC levels based on your questionnaire\n responses

\n
\n
\n
\n
\n
\n
\n

i

\n
\n \n

The listing of Capabilities provides a count of total capabilities in place at your organization. This list is broken down by the capabilities for your current Maturity Level plus any additional that are working towards a subsequent maturity Level.\n

\n
\n
\n
\n

capabilities:

\n
\n
\n {this.getCapabilitiesText(this.state.maturity)}\n
\n
\n
\n

Projected CMMC capabilities in place at your organization

\n
\n
\n
\n
\n
\n
\n

i

\n
\n \n

The listing of Processes you indicated are in place for your organization.

\n
\n
\n
\n

processes:

\n
\n
\n \n
\n
\n
\n

Projected CMMC processes in place at your organization

\n
\n
\n
\n
\n
\n

next steps:

\n
\n
\n
\n #1\n
\n {this.getStepOneText(this.state.maturity)}\n
\n
\n
\n #2\n
\n

Planning session to map out efforts to your target Maturity Level and rate of accomplishment.

\n
\n
\n
\n
\n
\n {this.state.orgInfo && !this.state.orgInfo.getStarted ? (\n
\n {' '}\n
\n ) : (\n
\n

Your request to be contacted about next steps has been received. Someone from Northcross Group will contact you via email within one business day.

\n
\n )}\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport AuthService from \"../services/auth.service\";\nimport OrganizationDataService from \"../services/organization.service\";\nimport { Button } from 'react-bootstrap';\nexport default class Dashboard extends Component {\n constructor(props) {\n super(props);\n\n this.getOrgInfo = this.getOrgInfo.bind(this);\n this.getCompletion = this.getCompletion.bind(this);\n this.submitQuestionnaire = this.submitQuestionnaire.bind(this);\n\n this.state = {\n currentUser: AuthService.getCurrentUser(),\n orgInfo: \"\",\n completion: \"\",\n maturity: \"\"\n };\n\n }\n\n componentDidMount() {\n this.getOrgInfo();\n this.getCompletion();\n this.getMaturityLevel();\n }\n\n getOrgInfo() {\n OrganizationDataService.getOrgInfo({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n orgInfo: response.data.data[0],\n });\n })\n }\n\n getCompletion() {\n OrganizationDataService.getCompletionByOrg({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n completion: response.data.data,\n });\n })\n }\n\n submitQuestionnaire() {\n let orgInfo = this.state.orgInfo;\n let org = {\n id: orgInfo.id,\n submitted: true,\n submittedUser: this.state.currentUser.id\n }\n OrganizationDataService.submit(org)\n .then(response => {\n orgInfo.submitted = true;\n this.setState({\n orgInfo: orgInfo\n })\n this.props.history.push(\"/summary\");\n window.location.reload();\n })\n }\n\n getMaturityLevel() {\n OrganizationDataService.getLevelByOrg({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n maturity: response.data.data.currentLevel,\n });\n })\n }\n\n // ...\n\n render() {\n return (\n
\n
\n
\n {this.state.orgInfo && this.state.orgInfo.submitted ? (\n
\n
\n

Preliminary Maturity Level:

\n {this.state.maturity > 0 ? (\n

Level {this.state.maturity}

\n ):(\n

Pre-Level 1

\n )}\n
\n
\n ) : null}\n
\n {this.state.currentUser.role !== \"readonly\" ? (\n
\n {this.state.orgInfo && !this.state.orgInfo.submitted ? (\n \n \n {this.state.completion === 0 ? (\n

Questionnaire Input

\n ) : (\n

Complete Questionnaire

\n )}\n
\n
\n \n \n
\n

{Math.floor(this.state.completion * 100)}% Complete

\n
\n \n ) : (\n \n \n

View Questionnaire Results & Next Steps

\n \n )}\n
\n ):null}\n \n
\n \n \n

View Responses

\n \n
\n {this.state.currentUser && this.state.currentUser.role === \"fullcontrol\" ? (\n
\n \n \n

Manage Users

\n \n
\n ):null}\n {!this.state.orgInfo.submitted && this.state.currentUser && this.state.currentUser.role === \"fullcontrol\" && this.state.completion && this.state.completion == 1 ? (\n
\n {' '}\n
\n ) : null}\n
\n
\n
\n
\n
Remember: There are no right or wrong answers…
\n\n

The questionnaire is designed to capture the cybersecurity things you have in place today compared to the CMMC model.

\n
\n
\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport OrganizationDataService from \"../services/organization.service\";\nimport UserDataService from \"../services/user.service\";\n\nimport AuthService from \"../services/auth.service\";\n\nconst PROCESS_DOMAIN_ID = 18; // added here until db is fixed with a flag\n\nexport default class Responses extends Component {\n constructor(props) {\n super(props);\n this.updateQuestionnaireState = this.updateQuestionnaireState.bind(this);\n this.checkStarted = this.checkStarted.bind(this);\n\n this.state = {\n domains: [],\n currentUser: AuthService.getCurrentUser(),\n submittedUser: \"\",\n submittedDate: \"\",\n questionnaire: []\n };\n\n this.getMaturityLevel();\n }\n\n componentDidMount() {\n this.getOrgInfo();\n this.updateQuestionnaireState();\n }\n\n getMaturityLevel() {\n OrganizationDataService.getLevelByOrg({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n maturity: response.data.data.currentLevel,\n levels: response.data.data\n });\n })\n }\n\n getOrgInfo() {\n OrganizationDataService.getOrgInfo({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n let utcDate = response.data.data[0].updatedAt;\n let localDate = new Date(utcDate);\n let dateString = (localDate.getMonth()+1)+\"/\"+localDate.getDate()+\"/\"+localDate.getFullYear();\n this.setState({\n orgInfo: response.data.data[0],\n submittedDate: dateString,\n });\n if(response.data.data[0].submitted) this.getUserInfo();\n })\n }\n\n getUserInfo() {\n UserDataService.getUser(this.state.orgInfo.submittedUser)\n .then(response => {\n let user = response.data.data\n this.setState({\n submittedUser: user.firstName + \" \" + user.lastName\n });\n })\n }\n\n // gets the current state of the questionnaire (domains, questions, answers)\n updateQuestionnaireState() {\n OrganizationDataService.updateQuestionnaireState(this.state.currentUser.organizationId)\n .then(response => {\n this.setState({\n questionnaire: response.data.data,\n });\n })\n }\n\n // render question value\n renderAnswer(value) {\n switch (value) {\n case 0:\n return No answer;\n case 1:\n return Yes\n case 2:\n return No\n default:\n return 'error displaying question buttons';\n }\n }\n\n // returns true if the questionnaire has been started\n checkStarted(){\n if(this.state.questionnaire){\n for(let domain of this.state.questionnaire){\n for(let question of domain.questions){\n if(question.answers && question.answers.length > 0){\n return true;\n }\n }\n };\n }\n return false;\n }\n\n // ...\n render() {\n\n // process domain\n let processDomain = this.state.questionnaire.find(d => d.id === PROCESS_DOMAIN_ID);\n\n return (\n
\n
\n
\n {!this.checkStarted() && this.state.questionnaire.length !== 0 ? (\n
\n
No questionnaire data input.
\n {this.state.currentUser.role != \"readonly\" &&\n Click here to access the questionnaire.\n } \n
\n ):(\n
\n
\n {this.state.orgInfo ? (\n

CMMC Questionnaire Responses

\n ):null}\n
\n
\n {this.state.orgInfo ? (\n

{this.state.orgInfo.name}

\n ):null}\n
\n {this.state.orgInfo && this.state.orgInfo.submitted === true ? (\n
\n
Preliminary Maturity Level: {this.state.maturity > 0 ? `Level ${this.state.maturity}` : \"Pre-Level 1\"}
\n Questionnaire submitted on {this.state.submittedDate} by {this.state.submittedUser}\n
\n ):null}\n \n
\n {this.state.questionnaire &&\n this.state.questionnaire.map((domain, id) => (\n
\n {domain.id !== PROCESS_DOMAIN_ID ? (\n
    \n {domain.id}\n {domain.questions && domain.questions.length > 0 &&\n domain.questions.map((question, id) => \n (\n question.parentId === null ? (\n
  • {domain.name}:\n {question.answers && question.answers.length > 0 && question.answers[0].value === 1 ? \n ( Yes, controls are implemented )\n : question.answers && question.answers.length > 0 && question.answers[0].value === 2 ? \n ( No, controls are not implemented )\n : ( No answer )\n }\n
  • \n ) : (\n domain.questions[0].answers.length > 0 && domain.questions[0].answers[0].value === 1 ? (\n
  • \n {question.text} {question.answers.length > 0 ? (\n this.renderAnswer(question.answers[0].value)\n ):(\n this.renderAnswer(0)\n )}\n
  • \n ):null\n )\n ))} \n
\n ):(\n
    \n {domain.id}\n
  • {domain.name}
  • \n {domain.questions && domain.questions.length > 0 &&\n domain.questions.map((question, id) => (\n question.parentId === null ? (\n
  • \n {question.text} {question.answers.length > 0 ? (\n this.renderAnswer(question.answers[0].value)\n ):(\n this.renderAnswer(0)\n )}\n
  • \n ):null\n ))}\n
\n )}\n
\n ))}\n
\n
\n )}\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport UserDataService from \"../services/user.service\";\nimport { Table, Button } from 'react-bootstrap';\n\nimport AuthService from \"../services/auth.service\";\nimport { Textbox, Checkbox } from 'react-inputs-validation';\nimport constants from './../constants.js';\nimport logo from \"../assets/cmmc-logo-allwhite.png\";\n\nconst ROLES = [\n {\n value: \"readonly\",\n text: \"Read only\"\n },\n {\n value: \"questionnaireonly\",\n text: \"Questionnaire input only\"\n },\n {\n value: \"fullcontrol\",\n text: \"Administrator (Full Control)\"\n }\n];\n\nexport default class Users extends Component {\n constructor(props) {\n super(props);\n\n this.getUsers = this.getUsers.bind(this);\n this.editUser = this.editUser.bind(this);\n this.updateUser = this.updateUser.bind(this);\n this.newUserSubmit = this.newUserSubmit.bind(this);\n this.updateUserCancel = this.updateUserCancel.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.validateNewUserForm = this.validateNewUserForm.bind(this);\n this.validateEditUserForm = this.validateEditUserForm.bind(this);\n\n this.state = {\n currentUser: AuthService.getCurrentUser(),\n users: \"\",\n newUser: false,\n editUser: false,\n userId: \"\",\n firstName: \"\",\n lastName: \"\",\n role: \"\",\n userStatus: \"\",\n hasFirstNameError: \"\",\n hasLastNameError: \"\",\n hasEmailError: \"\",\n validate: false,\n resetPassword: false,\n emailMessage: \"\"\n };\n\n }\n toggleValidating(validate) {\n this.setState({ validate });\n }\n\n validateEditUserForm(e) {\n e.preventDefault();\n this.toggleValidating(true);\n this.setState({\n hasFirstNameError: false,\n hasLastNameError: false\n });\n\n let validationErrors={};\n if(this.state.firstName.length === 0) {\n validationErrors.firstNameError = true;\n this.setState({hasFirstNameError: true})\n }\n if(this.state.lastName.length === 0) {\n validationErrors.lastNameError = true;\n this.setState({hasLastNameError: true})\n }\n\n return Object.keys(validationErrors).length;\n }\n\n validateNewUserForm(e) {\n const email_reg = constants.Email_Validation_Regex;\n e.preventDefault();\n this.toggleValidating(true);\n\n this.setState({\n hasFirstNameError: false,\n hasLastNameError: false,\n hasEmailError: false\n });\n\n let validationErrors={};\n if(this.state.firstName.length === 0) {\n validationErrors.firstNameError = true;\n this.setState({hasFirstNameError: true})\n }\n if(this.state.lastName.length === 0) {\n validationErrors.lastNameError = true;\n this.setState({hasLastNameError: true})\n }\n if(this.state.email.length === 0 || !email_reg.test(String(this.state.email).toLowerCase())) {\n validationErrors.emailError = true;\n this.setState({hasEmailError: true})\n }\n\n return Object.keys(validationErrors).length;\n }\n\n componentDidMount() {\n this.getUsers();\n }\n\n // get list of uses by org\n getUsers() {\n UserDataService.getUsersByOrg(this.state.currentUser.organizationId)\n .then(response => {\n this.setState({\n users: response.data.data,\n });\n })\n }\n\n editUser(user) {\n this.setState({\n newUser: false,\n editUser: true,\n userId: user.id,\n email: user.email,\n firstName: user.firstName,\n lastName: user.lastName,\n role: user.role,\n userStatus: user.userStatus\n })\n }\n\n addUser() {\n this.setState({\n newUser: true,\n editUser: false,\n userId: \"\",\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n role: \"readonly\",\n userStatus: \"\",\n resetPassword: false\n });\n\n }\n\n newUserCancel() {\n this.setState({\n newUser: false\n });\n }\n\n newUserSubmit(e) {\n // check form validation\n if(this.validateNewUserForm(e)) {\n return false;\n }\n\n let user = {\n id: this.state.userId,\n firstName: this.state.firstName,\n lastName: this.state.lastName,\n email: this.state.email,\n userStatus: this.state.userStatus,\n organizationId: this.state.currentUser.organizationId,\n role: this.state.role\n }\n\n UserDataService.newUser(user)\n .then(res => {\n this.getUsers();\n this.setState({\n newUser: false\n });\n })\n .catch(err => {\n this.setState({\n emailMessage: \"Email address is already in use.\"\n })\n })\n }\n\n updateUser(e) {\n // check form validation\n if(this.validateEditUserForm(e)) {\n return false;\n }\n\n // fix for changing an unconfirmed user to active\n let user = {\n id: this.state.userId,\n firstName: this.state.firstName,\n lastName: this.state.lastName,\n email: this.state.email,\n userStatus: this.state.userStatus,\n role: this.state.role\n }\n UserDataService.updateUser(user)\n .then(res => {\n this.getUsers();\n this.setState({\n editUser: false,\n resetPassword: false\n });\n // check for updated name for current user\n let loggedInUser = this.state.currentUser;\n if(loggedInUser.id === user.id){\n loggedInUser.name = user.firstName + \" \" + user.lastName;\n sessionStorage.setItem(\"user\", JSON.stringify(loggedInUser));\n window.location.reload();\n }\n })\n }\n\n updateUserCancel() {\n this.setState({\n editUser: false,\n resetPassword: false\n });\n }\n\n handleChange() {\n\n }\n\n // handle input change\n handleInputChange(event) {\n const target = event.target;\n const value = target.value;\n const name = target.name;\n\n this.setState({\n [name]: value\n });\n\n }\n\n // submit reset request\n resetPassword() {\n //call auth service\n let body ={\n email: this.state.email\n }\n AuthService.forgotPassword(body)\n .then(res => {\n this.setState({\n resetPassword: true\n });\n })\n }\n\n //format dateString\n formatDate(date){\n let localDate = new Date(date);\n let dateString = (localDate.getMonth()+1)+\"/\"+localDate.getDate()+\"/\"+localDate.getFullYear();\n return ( dateString );\n }\n\n // ...\n render() {\n const {\n validate\n } = this.state;\n const email_reg = constants.Email_Validation_Regex;\n\n const STATUS = {\n 0: \"Blocked\",\n 1: \"Active\",\n 2: \"Unconfirmed\"\n };\n\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n {this.state.users ? (\n \n {this.state.users.map((user) => {\n\n if (this.state.editUser && this.state.userId === user.id) {\n return (\n \n \n \n )\n }\n else {\n return (\n \n \n \n \n \n \n \n )\n }\n })}\n \n ) : null}\n
UserLast ActiveRoleStatusEdit
\n
\n
\n \n {this.state.firstName} {this.state.lastName}\n \n {this.state.email}\n \n
\n
\n
\n
\n \n
\n
\n { if(e.target.value === '') this.setState({hasFirstNameError:true}); else this.setState({hasFirstNameError:false}); this.setState({'firstName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({hasFirstNameError:true}); else this.setState({hasFirstNameError:false}); this.setState({'firstName': e.target.value})}}\n />\n
\n
\n {this.state.hasFirstNameError === true && (\n
First Name is required
\n )}\n
\n
\n \n
\n
\n { if(e.target.value === '') this.setState({hasLastNameError:true}); else this.setState({hasLastNameError:false}); this.setState({'lastName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({hasFirsthasLastNameErrorNameError:true}); else this.setState({hasLastNameError:false}); this.setState({'lastName': e.target.value})}}\n />\n
\n
\n {this.state.hasLastNameError === true && (\n
Last Name is required
\n )}\n
\n
\n
\n {this.state.currentUser.id === this.state.userId ? (\n
\n Active\n
\n ):(\n
\n \n \n
\n )}\n {this.state.currentUser.id === this.state.userId ? (\n
\n Full Control\n
\n ):(\n
\n \n \n
\n )}\n {!this.state.resetPassword ? (\n
\n \n \n \n
\n ):(\n
\n Password reset has been requested\n
\n )}\n
\n\n
\n  \n {' '}\n
\n
{user.firstName} {user.lastName}
{user.email}
{this.formatDate(user.updatedAt)}{ROLES.find(role => role.value === user.role).text}{STATUS[user.userStatus]}\n this.editUser(user)} className=\"edit-icon\">\n Edit User\n \n
\n
\n
\n
\n \n \n {this.state.newUser ? (\n \n \n\n \n ) : (\n \n\n )}\n \n
\n
\n
\n \n
\n
\n { if(e.target.value === '') this.setState({hasFirstNameError:true}); else this.setState({hasFirstNameError:false}); this.setState({'firstName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({hasFirstNameError:true}); else this.setState({hasFirstNameError:false}); this.setState({'firstName': e.target.value})}}\n />\n
\n
\n {this.state.hasFirstNameError === true && (\n
First Name is required
\n )}\n
\n \n
\n \n
\n
\n { if(e.target.value === '') this.setState({hasLastNameError:true}); else this.setState({hasLastNameError:false}); this.setState({'lastName': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '') this.setState({hasLastNameError:true}); else this.setState({hasLastNameError:false}); this.setState({'lastName': e.target.value})}}\n />\n
\n
\n {this.state.hasLastNameError === true && (\n
Last Name is required
\n )}\n
\n\n
\n \n
\n
\n { if(e.target.value === '' || !email_reg.test(String(e.target.value).toLowerCase())) this.setState({hasEmailError:true}); else this.setState({hasEmailError:false}); this.setState({'email': e.target.value})}}\n onBlur={(e) =>{ if(e.target.value === '' || !email_reg.test(String(e.target.value).toLowerCase())) this.setState({hasEmailError:true}); else this.setState({hasEmailError:false}); this.setState({'email': e.target.value})}}\n />\n
\n
\n {this.state.hasEmailError === true && (\n
Email is required
\n )}\n {this.state.emailMessage !== \"\" &&\n
Email is already in use
\n }\n
\n
\n \n \n
\n
\n\n
\n  \n {' '}\n
\n
this.addUser()}>Add User
\n
\n
\n
\n );\n }\n}\n","import React, {useState} from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\nimport UnderstandingResults from \"./understandingResults.component.js\";\n\nimport imgQuestionnaireIcon from '../assets/getAssistance/questionnaireIcon.png';\nimport imgSummaryPage from '../assets/getAssistance/summaryPage.png';\nimport imgNextStepsIcon from '../assets/getAssistance/nextStepsIcon.png';\nimport imgNextSteps from '../assets/getAssistance/nextSteps.png';\nimport imgManageUsers from '../assets/getAssistance/manageUsers.png';\nimport imgAddUser from '../assets/getAssistance/addUser.png';\nimport imgAddUserForm from '../assets/getAssistance/addUserForm.png';\nimport imgEditUser from '../assets/getAssistance/editUser.png';\nimport imgSaveUserInfo from '../assets/getAssistance/saveUserinfo.png';\nimport imgAdditionalQuestions from '../assets/getAssistance/additionalQuestions.png';\nimport imgViewResponses from '../assets/getAssistance/viewResponses.png';\nimport imgResponses from '../assets/getAssistance/responses.png';\nimport imgInfo from '../assets/getAssistance/info.png';\nimport imgDomainNav from '../assets/getAssistance/domains.png';\nimport imgNextBackArrows from '../assets/getAssistance/nextBackarrows.png';\nimport imgDomainStatus from '../assets/getAssistance/domainStatus.png';\nimport imgSubmitHomepage from '../assets/getAssistance/submitHomepage.png';\nimport imgSubmitQuestionnaire from '../assets/getAssistance/submitQuestionnaire.png';\n\n\nfunction GetAssistance() {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n \n

?

\n Get Assistance\n
\n\n\n \n \n Get Assistance\n \n \n\n Completing the CMMC Questionnaire\n Viewing Progress: Responses and Submitted Docs\n Creating and Updating Users to help you complete the CMMC Questionnaire\n Viewing your CMMC Questionnaire Results\n \n
\n \n

Completing the CMMC Questionnaire

\n

The first time you want to enter data into the Questionnaire, click on the Questionnaire Input icon.

\n\n \n \n

You can return to the Questionnaire as often as you need (please see Viewing Progress: Responses and\n Submitted Docs). The Questionnaire icon label will then read “Complete Questionnaire” and show your\n progress in completing the questionnaire.

\n \n

Navigating Through the Questionnaire questions:

\n
    \n
  • The Questionnaire data input page lists the 17 CMMC Domains across the top of the screen, and\n then a question about the domain that is currently selected is displayed below the list.\n \n \n
  • \n \n
  • The last item in the listing is a set of questions about Processes under the CMMC model.
  • \n
  • Incomplete Domains will display grey. When a Domain is active, it will display in a white. Once a domain is completed, it will display in blue with a green checkmark.\n\n \n
  • \n
  • The list of Domains is a navigation control that allows you to jump back and forth to any domain.
  • \n
  • You can also move between domain questions by clicking the arrows on the far left and right\n sides of your screen.\n \n
  • \n
\n

Entering Questionnaire Data:

\n
    \n
  • Under each CMMC Domain, a basic question asks whether your organization is practicing efforts\n under that domain.
  • \n
  • If you answer yes to that question, additional questions will be presented to better understand\n the specific capabilities your organization has under this Domain.\n \n
  • \n
  • Hover over the info icon to the left of the first question to display information about the domain.\n
  • \n
  • If you answer No to a Domain question, you click the right “Next” arrow on the far side of the\n screen or select another Domain from the list at the top of the page.
  • \n
  • The button labeled “Processes” asks three questions about what general cybersecurity\n processes your organization has implemented.
  • \n
\n

Completing the Questionnaire:

\n
    \n
  • Once you have entered a response for each of the Domains, Processes, and all the questions\n under a Domain that you are practicing, a “Submit Questionnaire” button is available on the\n Questionnaire data input page and on the CMMC Orchestration Questionnaire home page.
  • \n
  • When you are satisfied with all your responses, hit the “Submit Questionnaire” button to submit\n your data and receive your results immediately.\n
  • \n
  • \n \n \n
  • \n
\n \n

Viewing Progress: Responses and Submitted Docs

\n

You can return to the questionnaire as often as needed to complete it. You can review your previous\n input either through the questionnaire data input page or by clicking the View Responses icon for read\n only/print friendly view.

\n

Once you have submitted the questionnaire, you can still view the input from the View Responses page.

\n
    \n
  • Clicking on the View Responses icon takes you to a page that lists all your responses submitted\n to date, organized by Domains and then Processes.\n \n
  • \n \n
  • A print button is provided on the top far right corner of the screen to print out a copy of the\n questionnaire results.\n \n
  • \n
\n
\n

Creating and Updating Users to Complete the CMMC Questionnaire

\n

You can add or edit users if you need assistance completing the questionnaire.

\n

To begin adding or editing users, click the Manage Users icon located on the CMMC Orchestration\n Questionnaire home page. Clicking on the Manage Users icon takes you to a page that lists all registered\n users for your organization by names, last active dates, roles, and statuses.

\n \n

Adding New Users:

\n
    \n
  • If you would like to add a new user to the organization, you can click the Add User icon below\n the list of registered users.\n \n \n
  • \n \n
  • When clicked on, the Add User icon will display fields to input information for the new user and\n an Add button that will save the new user in the system. The user status will default to inactive\n until the user verifies their account via the email link.\n \n \n
  • \n \n
  • There are 3 types of roles that can be assigned to a user for an organization. The Full Control\n role will give the user full editing and viewing permissions for their organization’s questionnaire\n input, user management, and results. The Questionnaire Only role will give the user permission\n to edit and view questions as well as view the results of the questionnaire. The Read Only role\n will give the user access to view the results of the questionnaire only.
  • \n
\n

Editing Registered User Information:

\n
    \n
  • User information can be edited by clicking the Edit User icon on the far-right column of the\n Manage Users page. The Edit User icon takes you to the Edit User page that allows you to\n change the name, role, and status of a user.\n \n \n
  • \n
  • If there is a single user registered to the organization, the only editable fields will be first and\n last name. One active full control user for the organization is always required.
  • \n
  • Once you’ve made all the changes you need to, click the Save button at the bottom of the\n screen to save your changes. You may need to close the tab and log back in to refresh the fields.\n \n
  • \n
\n

Resetting an Existing User’s Password

\n

You can also reset a password for a registered user on the Edit User page. If you or another user in\n the organization would like to reset their password, you can hit the Reset Password button on the\n Edit User page for the user that wants to change their password. A reset password link will be sent\n to that user’s email.

\n
\n

Viewing Your CMMC Questionnaire Results

\n

You can review your questionnaire results and recommended next steps post-submission at any time in\n a read only/print friendly view.

\n

To view your projected maturity level and next steps, click the View Questionnaire Results & Next Steps\n icon on the CMMC Orchestration Questionnaire home page.\n \n

\n

Viewing Projected Questionnaire Results:

\n
    \n
  • Your projected maturity level based on the questionnaire results will be displayed on the first\n line of the Preliminary Maturity Level page. The maturity level displayed is a projection based on\n your questionnaire responses for domain, capability, and process questions.
  • \n
  • The Capabilities field displays the number of capabilities you have reported for your\n organization that includes both capabilities that drive the projected Maturity Level, plus any\n additional ones that would be working towards a subsequent Level.
  • \n
  • The Processes field lists the types of processes required for Maturity Levels 2-5 that you have\n reported for your organization.\n \n \n
  • \n
\n \n

Getting Started with Next Steps:

\n
    \n
  • The recommended next steps based on your results can be found beneath the results of the\n questionnaire on the Preliminary Maturity Level page.\n \n
  • \n
  • If you would like to get started with the recommended next steps, click the Get Started button\n located at the bottom of the Preliminary Maturity Level page.
  • \n
  • You should expect an email from a Northcross Group representative within one business day to\n get started.
  • \n
\n

For additional support, please contact\n info@cmmcquestionnaire.com\n

\n\n
\n \n \n \n
\n \n );\n}\n\nexport default GetAssistance;","\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport React, { Component } from \"react\";\nimport { Navbar, Nav, NavDropdown } from 'react-bootstrap';\nimport logo from '../assets/cmmc-logo-allwhite.png';\nimport AuthService from \"../services/auth.service\";\nimport OrganizationDataService from \"../services/organization.service\";\nimport GetAssistance from \"./getAssistance.component\";\nimport {withRouter} from \"react-router\";\nimport PropTypes from \"prop-types\";\n\nexport default class Header extends Component {\n constructor(props) {\n super(props);\n\n this.getOrgInfo = this.getOrgInfo.bind(this);\n\n this.state = {\n currentUser: AuthService.getCurrentUser()\n };\n }\n\n componentDidMount() {\n if(this.state.currentUser !== null) this.getOrgInfo();\n }\n\n getOrgInfo() {\n OrganizationDataService.getOrgInfo({\n organizationId: this.state.currentUser.organizationId\n })\n .then(response => {\n this.setState({\n orgInfo: response.data.data[0],\n });\n })\n }\n\n render() {\n return (\n
\n {this.state.currentUser !== null ?\n \n \n \n \n \n \n \n \n \n \n :\n (\n \n \n \n \n \n \n \n \n )}\n
\n
\n {this.state.orgInfo ? (\n

{this.state.orgInfo.name}

\n ):null}\n \n
\n
\n \n
\n
\n
\n )\n }\n}\n\n\n\nclass ShowTheTitle extends React.Component {\n static propTypes = {\n match: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n };\n\n\n getPageTitle() {\n let title = \"CMMC Questionnaire\"\n let page = window.location.pathname;\n if(page === \"/dashboard\") title = \"CMMC Questionnaire\";\n if(page === \"/questions\") title = \"Questionnaire\";\n if(page === \"/summary\") title = \"Questionnaire Results\";\n if(page === \"/responses\") title = \"Questionnaire Responses\";\n if(page === \"/users\") title = \"User Management\";\n\n return title;\n }\n\n render() {\n const { match, location, history } = this.props;\n\n return

{this.getPageTitle()}

;\n }\n}\n\n// Create a new component that is \"connected\" (to borrow redux\n// terminology) to the router.\nconst ShowTheTitleWithRouter = withRouter(ShowTheTitle);","import React from \"react\";\nimport { Navbar, Nav } from 'react-bootstrap';\nimport CookieNotice from './cookieNotice.component.js';\nimport PrivacyStatement from './privacyStatement.component.js';\nimport TermsofUse from './termsofUse.component.js';\n\nfunction Footer() {\n return (\n
\n \n
\n );\n}\n\nexport default Footer;","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\nimport \"./cmmc.css\";\nimport \"./cmmc-addon.css\";\nimport \"./header-footer.css\";\nimport \"./response.css\";\nimport \"./users.css\";\n\n\n// custom route\nimport AuthenticatedRoute from './components/auth/authenticatedRoute.component'\n\n// Auth Components\nimport Login from \"./components/auth/login.component\";\nimport Register from \"./components/auth/register.component\";\nimport Verify from \"./components/auth/verify.component\";\nimport ResetPassword from \"./components/auth/resetPassword.component\";\nimport ForgotPassword from \"./components/auth/forgotPassword.component\";\nimport Logout from \"./components/auth/logout.component\";\n\n// pages\nimport Questionnaire from \"./components/questionnaire.component\";\nimport Summary from \"./components/summary.component\";\nimport Dashboard from \"./components/dashboard.component\";\nimport Responses from \"./components/responses.component\";\nimport Users from \"./components/users.component\";\n\n// header/footer\nimport Header from \"./components/header.component\";\nimport Footer from \"./components/footer.component\";\n\nclass App extends Component {\n\n render() {\n return (\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\n// use dotenv for environment variables\nconst dotenv = require('dotenv');\ndotenv.config();\n\n// render the app\nReactDOM.render( , document.getElementById(\"root\") );\n\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/questionnaireIcon.7c3abb9b.png\";","module.exports = __webpack_public_path__ + \"static/media/summaryPage.07cbc06c.png\";","module.exports = __webpack_public_path__ + \"static/media/nextStepsIcon.cfa1a81a.png\";","module.exports = __webpack_public_path__ + \"static/media/nextSteps.2d6ce37d.png\";","module.exports = __webpack_public_path__ + \"static/media/manageUsers.33a7e342.png\";","module.exports = __webpack_public_path__ + \"static/media/addUser.432fb3cb.png\";","module.exports = __webpack_public_path__ + \"static/media/addUserForm.b4bd8bc8.png\";","module.exports = __webpack_public_path__ + \"static/media/editUser.c4e5222a.png\";","module.exports = __webpack_public_path__ + \"static/media/saveUserinfo.39adda2c.png\";","module.exports = __webpack_public_path__ + \"static/media/additionalQuestions.565ab39f.png\";","module.exports = __webpack_public_path__ + \"static/media/viewResponses.c8787b0e.png\";","module.exports = __webpack_public_path__ + \"static/media/responses.45154a49.png\";","module.exports = __webpack_public_path__ + \"static/media/info.27f6cd0c.png\";","module.exports = __webpack_public_path__ + \"static/media/domains.48b79635.png\";"],"sourceRoot":""}