Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Mathias Engelbrecht Pilegård
Pipit
Commits
5690006f
Commit
5690006f
authored
Aug 27, 2021
by
Mathias Engelbrecht Pilegård
Browse files
refactored so signUp component is semf contained in its own file
parent
498a7bbb
Changes
71
Expand all
Hide whitespace changes
Inline
Side-by-side
client/node_modules/.cache/.eslintcache
View file @
5690006f
This diff is collapsed.
Click to expand it.
client/node_modules/.cache/babel-loader/04db811e4ecf09ca53facad9dac0e51a.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import signUp from './signUp/SignUp';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState);
\n
toggleSignInFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
console.log(
\"
Add eventlistener
\"
);
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
console.log(
\"
Remove eventlistener
\"
);
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 118,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 119,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 117,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 116,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 131,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 129,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 138,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 136,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 145,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 143,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 128,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 150,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 149,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 148,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 126,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 115,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 157,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
wrhmVp2lhpyin9y/fggBjGZq26c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"signUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"toggleSignInFormVisible"
,
"showSignUpForm"
,
"signUpFormVisibilityState"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"pageClickEvent"
,
"e"
,
"console"
,
"log"
,
"signUpFormRef"
,
"current"
,
"contains"
,
"target"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"firstname"
,
"lastname"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"handlefirstnameChange"
,
"setfirstname"
,
"value"
,
"handlelastnameChange"
,
"setlastname"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"setConfirmPassword"
,
"handlePasswordReset"
,
"fetch"
,
"config"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import signUp from './signUp/SignUp';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState)
\r\n
toggleSignInFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
console.log(
\"
Add eventlistener
\"
)
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
console.log(
\"
Remove eventlistener
\"
)
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/05ff41ecf834a0930ed04911824c2be9.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import signUp from './signUp/SignUp';
\n
import config from '../../config';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const userInputData = JSON.stringify({
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 82,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 83,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 84,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 81,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 80,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 91,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 109,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 107,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 92,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 114,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 112,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 90,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 79,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 121,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
u8yY6NlW4PSOG6xgLhGhaVL5lVE=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"signUp"
,
"config"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"handleUsernameChange"
,
"e"
,
"target"
,
"value"
,
"handlePasswordChange"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"console"
,
"log"
,
"handlePasswordReset"
,
"fetch"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"window"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
,
"toggleSignInFormVisible"
,
"signUpFormVisibilityState"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import signUp from './signUp/SignUp';
\r\n
import config from '../../config';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/0a0c620dc987624e792ffb0022eb0c20.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import signUp from './signUp/SignUp';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState);
\n
toggleSignInFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
console.log(
\"
Add eventlistener
\"
);
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
console.log(
\"
Remove eventlistener
\"
);
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const userInputData = JSON.stringify({
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 96,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 97,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 94,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 108,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 106,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 115,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 122,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 126,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 125,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 103,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 92,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 134,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
wrhmVp2lhpyin9y/fggBjGZq26c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"signUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"pageClickEvent"
,
"e"
,
"console"
,
"log"
,
"signUpFormRef"
,
"current"
,
"contains"
,
"target"
,
"signUpFormVisibilityState"
,
"toggleSignInFormVisible"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"handlePasswordReset"
,
"fetch"
,
"config"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
,
"handleUsernameChange"
,
"handlePasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import signUp from './signUp/SignUp';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState)
\r\n
toggleSignInFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
console.log(
\"
Add eventlistener
\"
)
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
console.log(
\"
Remove eventlistener
\"
)
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/0b548187b5442a77beaaad1781b2eac1.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import config from '../../../config';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
const handleSignUpFormSubmit = e => {
\n
e.preventDefault();
\n\n
if (!password || !confirmPassword) {
\n
window.alert(
\"
A password field is blank
\"
);
\n
return;
\n
}
\n\n
if (!(confirmPassword.length >= 7)) {
\n
window.alert(
\"
Password must consist of 8 characters or more
\"
);
\n
return;
\n
}
\n\n
if (!(password == confirmPassword)) {
\n
window.alert(
\"
Passwords fo not match
\"
);
\n
return;
\n
} else {
\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// handleSignInFormSubmit(e)
\n
}
\n
});
\n
}
\n
};
\n\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 86,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 90,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 88,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 97,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 111,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 109,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 118,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 116,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 123,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 128,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 126,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 87,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 85,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 84,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 83,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
X8Ck5qdBspERHliLS55/n2n2lgM=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"FontAwesomeIcon"
,
"config"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"toggleSignInFormVisible"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"firstname"
,
"lastname"
,
"email"
,
"username"
,
"password"
,
"setfirstname"
,
"setlastname"
,
"setUsername"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"handlefirstnameChange"
,
"e"
,
"target"
,
"value"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"handleSignUpFormSubmit"
,
"preventDefault"
,
"window"
,
"alert"
,
"length"
,
"fetch"
,
"serviceAPI"
,
"createNewUserURL"
,
"then"
,
"res"
,
"ok"
,
"Promise"
,
"reject"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import config from '../../../config';
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleSignUpFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
if (!password || !confirmPassword) {
\r\n
window.alert(
\"
A password field is blank
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(confirmPassword.length >= 7)) {
\r\n
window.alert(
\"
Password must consist of 8 characters or more
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(password == confirmPassword)) {
\r\n
window.alert(
\"
Passwords fo not match
\"
)
\r\n
return
\r\n
}
\r\n\r\n
else {
\r\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// handleSignInFormSubmit(e)
\r\n
}
\r\n
})
\r\n
}
\r\n
}
\r\n\r\n
return (
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/0ecc79e01d1d66dca102212f5d9a6c69.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
toggleSignInFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 70,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 74,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 72,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 81,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 79,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 88,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 86,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 107,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 112,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 110,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 71,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 69,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 68,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 66,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
MG/tvUlIVD3u0ENCBSYdvOCrtb8=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"firstname"
,
"setfirstname"
,
"lastname"
,
"setlastname"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"handlefirstnameChange"
,
"e"
,
"target"
,
"value"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"toggleSignInFormVisible"
,
"pageClickEvent"
,
"console"
,
"log"
,
"current"
,
"contains"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"handleSignUpFormSubmit"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
toggleSignInFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
return (
\r\n
< div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`
\r\n
}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div >
\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/1015c42a9a596a2d0faf16afc1e6d39e.json
0 → 100644
View file @
5690006f
This diff is collapsed.
Click to expand it.
client/node_modules/.cache/babel-loader/10ba4af9e5c8b6bd3633aa1aa5b373ce.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import config from
\"
../../config
\"
;
\n
import SignUp from
\"
./signUp/SignUp
\"
;
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(SignUp, {}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 59,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 62,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 63,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 64,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 61,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 60,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 71,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 75,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 73,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 82,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 80,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 89,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 87,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 72,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 94,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 92,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 70,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 58,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 101,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
MmTzXSZKancUyLlOOEFKZmNpj1c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"config"
,
"SignUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"resetPasswordRequestOptions"
,
"method"
,
"body"
,
"userInputData"
,
"handleSignInFormSubmit"
,
"e"
,
"preventDefault"
,
"signInWithCredentials"
,
"username"
,
"password"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"console"
,
"log"
,
"handlePasswordReset"
,
"fetch"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"window"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
,
"toggleSignInFormVisible"
,
"signUpFormVisibilityState"
,
"handleUsernameChange"
,
"handlePasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import config from
\"
../../config
\"\r\n
import SignUp from
\"
./signUp/SignUp
\"\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<SignUp />
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/14fc7243bd0d49dd9ec17c175b4d0d7a.json
0 → 100644
View file @
5690006f
This diff is collapsed.
Click to expand it.
client/node_modules/.cache/babel-loader/1de9cf5e07c8b4fcf2981055b3cd43db.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import config from
\"
../../config
\"
;
\n
import SignUp from
\"
./signUp/SignUp
\"
;
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignUpFormSubmit = e => {
\n
e.preventDefault();
\n\n
if (!password || !confirmPassword) {
\n
window.alert(
\"
A password field is blank
\"
);
\n
return;
\n
}
\n\n
if (!(confirmPassword.length >= 7)) {
\n
window.alert(
\"
Password must consist of 8 characters or more
\"
);
\n
return;
\n
}
\n\n
if (!(password == confirmPassword)) {
\n
window.alert(
\"
Passwords fo not match
\"
);
\n
return;
\n
} else {
\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {
\n
handleSignInFormSubmit(e);
\n
}
\n
});
\n
}
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(SignUp, {}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 92,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 96,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 97,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 94,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 108,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 106,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 115,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 122,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 126,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 125,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 103,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 91,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 134,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
MmTzXSZKancUyLlOOEFKZmNpj1c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"config"
,
"SignUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"resetPasswordRequestOptions"
,
"method"
,
"body"
,
"userInputData"
,
"handleSignUpFormSubmit"
,
"e"
,
"preventDefault"
,
"password"
,
"confirmPassword"
,
"window"
,
"alert"
,
"length"
,
"fetch"
,
"serviceAPI"
,
"createNewUserURL"
,
"loginRequestOptions"
,
"then"
,
"res"
,
"ok"
,
"Promise"
,
"reject"
,
"handleSignInFormSubmit"
,
"signInWithCredentials"
,
"username"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"console"
,
"log"
,
"handlePasswordReset"
,
"resetPasswordURL"
,
"isAuthenticated"
,
"toggleSignInFormVisible"
,
"signUpFormVisibilityState"
,
"handleUsernameChange"
,
"handlePasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import config from
\"
../../config
\"\r\n
import SignUp from
\"
./signUp/SignUp
\"\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignUpFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
if (!password || !confirmPassword) {
\r\n
window.alert(
\"
A password field is blank
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(confirmPassword.length >= 7)) {
\r\n
window.alert(
\"
Password must consist of 8 characters or more
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(password == confirmPassword)) {
\r\n
window.alert(
\"
Passwords fo not match
\"
)
\r\n
return
\r\n
}
\r\n\r\n
else {
\r\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
handleSignInFormSubmit(e)
\r\n
}
\r\n
})
\r\n
}
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<SignUp />
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/207433fb15a07902b2133ef877adbc34.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n\n
const handleSignUpFormSubmit = e => {
\n
e.preventDefault();
\n\n
if (!password || !confirmPassword) {
\n
window.alert(
\"
A password field is blank
\"
);
\n
return;
\n
}
\n\n
if (!(confirmPassword.length >= 7)) {
\n
window.alert(
\"
Password must consist of 8 characters or more
\"
);
\n
return;
\n
}
\n\n
if (!(password == confirmPassword)) {
\n
window.alert(
\"
Passwords fo not match
\"
);
\n
return;
\n
} else {
\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {
\n
handleSignInFormSubmit(e);
\n
}
\n
});
\n
}
\n
};
\n\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 50,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 54,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 52,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 61,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 59,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 68,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 66,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 75,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 73,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 82,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 80,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 87,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 92,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 90,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 51,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 49,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 48,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 47,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
X8Ck5qdBspERHliLS55/n2n2lgM=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"firstname"
,
"setfirstname"
,
"lastname"
,
"setlastname"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"handleSignUpFormSubmit"
,
"e"
,
"preventDefault"
,
"window"
,
"alert"
,
"length"
,
"fetch"
,
"config"
,
"serviceAPI"
,
"createNewUserURL"
,
"loginRequestOptions"
,
"then"
,
"res"
,
"ok"
,
"Promise"
,
"reject"
,
"handleSignInFormSubmit"
,
"handlefirstnameChange"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const handleSignUpFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
if (!password || !confirmPassword) {
\r\n
window.alert(
\"
A password field is blank
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(confirmPassword.length >= 7)) {
\r\n
window.alert(
\"
Password must consist of 8 characters or more
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(password == confirmPassword)) {
\r\n
window.alert(
\"
Passwords fo not match
\"
)
\r\n
return
\r\n
}
\r\n\r\n
else {
\r\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
handleSignInFormSubmit(e)
\r\n
}
\r\n
})
\r\n
}
\r\n
}
\r\n\r\n
return (
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/286084ee03c20a9944efd045c198a156.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import config from '../../../config';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n\n
const toggleSignUpFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
toggleSignUpFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
const handleSignUpFormSubmit = e => {
\n
e.preventDefault();
\n\n
if (!password || !confirmPassword) {
\n
window.alert(
\"
A password field is blank
\"
);
\n
return;
\n
}
\n\n
if (!(confirmPassword.length >= 7)) {
\n
window.alert(
\"
Password must consist of 8 characters or more
\"
);
\n
return;
\n
}
\n\n
if (!(password == confirmPassword)) {
\n
window.alert(
\"
Passwords fo not match
\"
);
\n
return;
\n
} else {
\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// handleSignInFormSubmit(e)
\n
}
\n
});
\n
}
\n
};
\n\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 108,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 106,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 115,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 122,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 129,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 136,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 134,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 141,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 146,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 144,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 103,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 101,
\n
columnNumber: 7
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 154,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 155,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignUpFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 156,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 153,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 152,
\n
columnNumber: 7
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
qUYGdR3iJtgTZKOx1lTzbuiYPaU=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"FontAwesomeIcon"
,
"config"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"toggleSignUpFormVisible"
,
"pageClickEvent"
,
"e"
,
"console"
,
"log"
,
"current"
,
"contains"
,
"target"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"firstname"
,
"setfirstname"
,
"lastname"
,
"setlastname"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"handlefirstnameChange"
,
"value"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"handleSignUpFormSubmit"
,
"preventDefault"
,
"alert"
,
"length"
,
"fetch"
,
"serviceAPI"
,
"createNewUserURL"
,
"then"
,
"res"
,
"ok"
,
"Promise"
,
"reject"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import config from '../../../config';
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n
const toggleSignUpFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
toggleSignUpFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleSignUpFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
if (!password || !confirmPassword) {
\r\n
window.alert(
\"
A password field is blank
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(confirmPassword.length >= 7)) {
\r\n
window.alert(
\"
Password must consist of 8 characters or more
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(password == confirmPassword)) {
\r\n
window.alert(
\"
Passwords fo not match
\"
)
\r\n
return
\r\n
}
\r\n\r\n
else {
\r\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// handleSignInFormSubmit(e)
\r\n
}
\r\n
})
\r\n
}
\r\n
}
\r\n\r\n
return (
\r\n
<div>
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignUpFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/290896fd4f0f2ce5d1f6cd939544f404.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import signUp from './signUp/SignUp';
\n
import config from '../../config';
\n
import SignUp from './signUp/SignUp';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const userInputData = JSON.stringify({
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(SignUp, {}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 81,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 84,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 88,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 86,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 95,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 93,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 85,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 107,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 106,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 83,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 80,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 114,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
u8yY6NlW4PSOG6xgLhGhaVL5lVE=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"signUp"
,
"config"
,
"SignUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"handleUsernameChange"
,
"e"
,
"target"
,
"value"
,
"handlePasswordChange"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"console"
,
"log"
,
"handlePasswordReset"
,
"fetch"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"window"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
],
"mappings"
:
";;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,MAArC,QAAmD,OAAnD;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,WAAT,QAA4B,kBAA5B;AACA,OAAO,aAAP;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,MAAP,MAAmB,cAAnB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;;;AAEA,MAAMC,KAAK,GAAG,MAAM;AAAA;;AAClB,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAA0BR,WAAW,EAA3C;AACA,QAAM,CAACS,YAAD,EAAeC,eAAf,IAAkCd,QAAQ,EAAhD;AAEA,QAAM,CAACe,QAAD,EAAWC,WAAX,IAA0BhB,QAAQ,CAAC,EAAD,CAAxC;AACA,QAAM,CAACiB,QAAD,EAAWC,WAAX,IAA0BlB,QAAQ,CAAC,EAAD,CAAxC;;AAEA,QAAMmB,oBAAoB,GAAIC,CAAD,IAAO;AAClCJ,IAAAA,WAAW,CAACI,CAAC,CAACC,MAAF,CAASC,KAAV,CAAX;AACD,GAFD;;AAIA,QAAMC,oBAAoB,GAAIH,CAAD,IAAO;AAClCF,IAAAA,WAAW,CAACE,CAAC,CAACC,MAAF,CAASC,KAAV,CAAX;AACD,GAFD;;AAIA,QAAME,aAAa,GAAGC,IAAI,CAACC,SAAL,CAAe;AACnCC,IAAAA,KAAK,EAAG,GAAEZ,QAAS,EADgB;AAEnCE,IAAAA,QAAQ,EAAG,GAAEA,QAAS;AAFa,GAAf,CAAtB;AAKA,QAAMW,mBAAmB,GAAG;AAC1BC,IAAAA,MAAM,EAAE,MADkB;AAE1BC,IAAAA,IAAI,EAAEN;AAFoB,GAA5B;AAKA,QAAMO,2BAA2B,GAAG;AAClCF,IAAAA,MAAM,EAAE,KAD0B;AAElCC,IAAAA,IAAI,EAAEN;AAF4B,GAApC;;AAKA,QAAMQ,sBAAsB,GAAIZ,CAAD,IAAO;AACpCA,IAAAA,CAAC,CAACa,cAAF;AAEArB,IAAAA,QAAQ,CAACsB,qBAAT,CAA+B;AAAEnB,MAAAA,QAAF;AAAYE,MAAAA;AAAZ,KAA/B,EACGkB,IADH,CACQC,GAAG,IAAI;AACX,YAAMvB,YAAY,GAAGuB,GAAG,CAACvB,YAAzB;AACAC,MAAAA,eAAe,CAACD,YAAD,CAAf,CAFW,CAGX;;AACAD,MAAAA,QAAQ,CAACyB,kBAAT,CAA4B;AAAExB,QAAAA,YAAF;AAAgByB,QAAAA,WAAW,EAAE;AAA7B,OAA5B;AACD,KANH,EAOGC,KAPH,CAOSC,GAAG,IAAIC,OAAO,CAACC,GAAR,CAAY,gBAAZ,EAA8BF,GAA9B,CAPhB;AAQD,GAXD;;AAaA,MAAI3B,YAAJ,EAAkB;AAChB;AACA,WAAO,IAAP;AACD;;AAED,QAAM8B,mBAAmB,GAAG,MAAM;AAChC,QAAI,CAAC5B,QAAD,IAAa,EAAjB,EAAqB;AACnB6B,MAAAA,KAAK,CAACpC,MAAM,CAACqC,UAAP,CAAkBC,gBAAnB,EAAqCf,2BAArC,CAAL,CACGI,IADH,CACSC,GAAD,IAAS;AACb,YAAI,CAACA,GAAG,CAACW,EAAT,EAAa;AACXC,UAAAA,MAAM,CAACC,KAAP,CAAa,6BAAb;AACAC,UAAAA,OAAO,CAACC,MAAR,CAAe,EAAf;AACA;AACD;;AACD,YAAIf,GAAG,CAACW,EAAR,EAAY,CACV;AACD;AACF,OAVH;AAWD,KAZD,MAaK;AACHC,MAAAA,MAAM,CAACC,KAAP,CAAa,gDAAb;AACD;AACF,GAjBD;;AAmBA,MAAI,CAACtC,SAAD,IAAc,CAACA,SAAS,CAACyC,eAA7B,EAA8C;AAC5C,wBACE;AAAK,MAAA,SAAS,EAAC,eAAf;AAAA,8BACE,QAAC,MAAD;AAAA;AAAA;AAAA;AAAA,cADF,eAGE;AAAK,QAAA,SAAS,EAAC,YAAf;AAAA,gCACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBADF,eAEE;AAAM,UAAA,QAAQ,EAAEpB,sBAAhB;AAAA,kCACE;AAAA,8CAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,MADrB;AAEE,cAAA,KAAK,EAAEjB,QAFT;AAGE,cAAA,QAAQ,EAAEI;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBADF,eAQE;AAAA,iDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,UADrB;AAEE,cAAA,KAAK,EAAEF,QAFT;AAGE,cAAA,QAAQ,EAAEM;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBARF,eAeE;AAAQ,YAAA,SAAS,EAAC,kBAAlB;AAAqC,YAAA,IAAI,EAAC,QAA1C;AAAA,uDAEE,QAAC,eAAD;AAAiB,cAAA,IAAI,EAAC;AAAtB;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAfF;AAAA;AAAA;AAAA;AAAA;AAAA,gBAFF,eAsBE;AAAK,UAAA,SAAS,EAAC,wBAAf;AAAA,iCACE;AAAA,mCACE;AAAG,cAAA,OAAO,EAAEoB,mBAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA,gBAtBF;AAAA;AAAA;AAAA;AAAA;AAAA,cAHF;AAAA;AAAA;AAAA;AAAA;AAAA,YADF;AAkCD,GAnCD,MAmCO;AACL,wBAAO,QAAC,QAAD;AAAU,MAAA,EAAE,EAAC;AAAb;AAAA;AAAA;AAAA;AAAA,YAAP;AACD;AACF,CAzGD;;GAAMjC,K;UAC4BN,W;;;KAD5BM,K;AA2GN,eAAeA,KAAf"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import signUp from './signUp/SignUp';
\r\n
import config from '../../config';
\r\n
import SignUp from './signUp/SignUp';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<SignUp />
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/2a52b77b3b37e06102956da87b3f9659.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import config from
\"
../../config
\"
;
\n
import signUp from './signUp/SignUp';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState);
\n
toggleSignInFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
console.log(
\"
Add eventlistener
\"
);
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
console.log(
\"
Remove eventlistener
\"
);
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 119,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 121,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 118,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 117,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 128,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 132,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 130,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 139,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 137,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 146,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 144,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 129,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 151,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 150,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 149,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 116,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 158,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
wrhmVp2lhpyin9y/fggBjGZq26c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"config"
,
"signUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"toggleSignInFormVisible"
,
"showSignUpForm"
,
"signUpFormVisibilityState"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"pageClickEvent"
,
"e"
,
"console"
,
"log"
,
"signUpFormRef"
,
"current"
,
"contains"
,
"target"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"firstname"
,
"lastname"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"handlefirstnameChange"
,
"setfirstname"
,
"value"
,
"handlelastnameChange"
,
"setlastname"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"setConfirmPassword"
,
"handlePasswordReset"
,
"fetch"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import config from
\"
../../config
\"\r\n
import signUp from './signUp/SignUp';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState)
\r\n
toggleSignInFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
console.log(
\"
Add eventlistener
\"
)
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
console.log(
\"
Remove eventlistener
\"
)
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/329d077c5ed786e3f4c6ead7e1a3aa79.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import config from '../../../config';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n\n
const toggleSignUpFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
toggleSignUpFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n\n
const handlefirstnameChange = e => {
\n
setfirstname(e.target.value);
\n
};
\n\n
const handlelastnameChange = e => {
\n
setlastname(e.target.value);
\n
};
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
const handleConfirmPasswordChange = e => {
\n
setConfirmPassword(e.target.value);
\n
};
\n\n
const handleSignUpFormSubmit = e => {
\n
e.preventDefault();
\n\n
if (!password || !confirmPassword) {
\n
window.alert(
\"
A password field is blank
\"
);
\n
return;
\n
}
\n\n
if (!(confirmPassword.length >= 7)) {
\n
window.alert(
\"
Password must consist of 8 characters or more
\"
);
\n
return;
\n
}
\n\n
if (!(password == confirmPassword)) {
\n
window.alert(
\"
Passwords fo not match
\"
);
\n
return;
\n
} else {
\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// handleSignInFormSubmit(e)
\n
}
\n
});
\n
}
\n
};
\n\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 108,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 106,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 115,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 122,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 120,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 129,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 127,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 136,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 134,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 141,
\n
columnNumber: 15
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 146,
\n
columnNumber: 17
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 144,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 103,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 101,
\n
columnNumber: 7
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 154,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 155,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignUpFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 156,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 153,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 152,
\n
columnNumber: 7
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
qUYGdR3iJtgTZKOx1lTzbuiYPaU=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"FontAwesomeIcon"
,
"config"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"toggleSignUpFormVisible"
,
"pageClickEvent"
,
"e"
,
"current"
,
"contains"
,
"target"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"firstname"
,
"setfirstname"
,
"lastname"
,
"setlastname"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"handlefirstnameChange"
,
"value"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
,
"handleSignUpFormSubmit"
,
"preventDefault"
,
"alert"
,
"length"
,
"fetch"
,
"serviceAPI"
,
"createNewUserURL"
,
"then"
,
"res"
,
"ok"
,
"Promise"
,
"reject"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import config from '../../../config';
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n
const toggleSignUpFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
toggleSignUpFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const handlefirstnameChange = (e) => {
\r\n
setfirstname(e.target.value)
\r\n
}
\r\n\r\n
const handlelastnameChange = (e) => {
\r\n
setlastname(e.target.value)
\r\n
}
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleConfirmPasswordChange = (e) => {
\r\n
setConfirmPassword(e.target.value)
\r\n
}
\r\n\r\n
const handleSignUpFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
if (!password || !confirmPassword) {
\r\n
window.alert(
\"
A password field is blank
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(confirmPassword.length >= 7)) {
\r\n
window.alert(
\"
Password must consist of 8 characters or more
\"
)
\r\n
return
\r\n
}
\r\n\r\n
if (!(password == confirmPassword)) {
\r\n
window.alert(
\"
Passwords fo not match
\"
)
\r\n
return
\r\n
}
\r\n\r\n
else {
\r\n
fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// handleSignInFormSubmit(e)
\r\n
}
\r\n
})
\r\n
}
\r\n
}
\r\n\r\n
return (
\r\n
<div>
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignUpFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/34ddf095d37a43094f106b7dd8a6c151.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const signUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 10,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 14,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 12,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 21,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 19,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 28,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 26,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 35,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 33,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 42,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 40,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 47,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 52,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 50,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 11,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 9,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 8,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 7,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(signUp,
\"
gjne783thL/vp5Xvi1oK0r4e58s=
\"
);
\n\n
export default signUp;"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"signUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"handleSignUpFormSubmit"
,
"firstname"
,
"handlefirstnameChange"
,
"lastname"
,
"handlelastnameChange"
,
"username"
,
"handleUsernameChange"
,
"password"
,
"handlePasswordChange"
,
"confirmPassword"
,
"handleConfirmPasswordChange"
],
"mappings"
:
";;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,MAArC,QAAmD,OAAnD;;;AAEA,MAAMC,MAAM,GAAG,MAAM;AAAA;;AACnB,QAAM,CAACC,yBAAD,EAA4BC,cAA5B,IAA8CL,QAAQ,CAAC,KAAD,CAA5D;AAEA,sBACE;AAAK,IAAA,SAAS,EAAG,SAAQI,yBAAyB,GAAG,QAAH,GAAc,UAAW,EAA3E;AAAA,2BACE;AAAK,MAAA,GAAG,EAAEE,aAAV;AAAyB,MAAA,SAAS,EAAC,eAAnC;AAAA,6BACE;AAAK,QAAA,SAAS,EAAC,YAAf;AAAA,gCACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBADF,eAEE;AAAM,UAAA,QAAQ,EAAEC,sBAAhB;AAAA,kCACE;AAAA,mDAEE;AACE,cAAA,EAAE,EAAC,WADL;AACiB,cAAA,IAAI,EAAC,MADtB;AAEE,cAAA,KAAK,EAAEC,SAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBADF,eAQE;AAAA,kDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,MADrB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBARF,eAeE;AAAA,8CAEE;AACE,cAAA,EAAE,EAAC,OADL;AACa,cAAA,IAAI,EAAC,MADlB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAfF,eAsBE;AAAA,iDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,UADrB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAtBF,eA6BE;AAAA,yDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,UADrB;AAEE,cAAA,KAAK,EAAEC,eAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBA7BF,eAoCE;AAAO,YAAA,SAAS,EAAC,uBAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBApCF,eAuCE;AAAQ,YAAA,SAAS,EAAC,kBAAlB;AAAqC,YAAA,IAAI,EAAC,QAA1C;AAAA,uDAEE,QAAC,eAAD;AAAiB,cAAA,IAAI,EAAC;AAAtB;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAvCF;AAAA;AAAA;AAAA;AAAA;AAAA,gBAFF;AAAA;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA,UADF;AAqDD,CAxDD;;GAAMd,M;;AA0DN,eAAeA,MAAf"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n\r\n
const signUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n\r\n
return (
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
}
\r\n\r\n
export default signUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/3bb573631a4f2d147b00bfc96d4e4df1.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import config from
\"
../../config
\"
;
\n
import SignUp from
\"
./signUp/SignUp
\"
;
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const userInputData = JSON.stringify({
\n
firstname: `${firstname}`,
\n
lastname: `${lastname}`,
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(SignUp, {}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 66,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 69,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 70,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 71,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 68,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 67,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 78,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 82,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 80,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 89,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 87,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 96,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 94,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 79,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 101,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 99,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 77,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 65,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 108,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
MmTzXSZKancUyLlOOEFKZmNpj1c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"config"
,
"SignUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"firstname"
,
"lastname"
,
"email"
,
"username"
,
"password"
,
"resetPasswordRequestOptions"
,
"method"
,
"body"
,
"handleSignInFormSubmit"
,
"e"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"console"
,
"log"
,
"handlePasswordReset"
,
"fetch"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"window"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
,
"toggleSignInFormVisible"
,
"signUpFormVisibilityState"
,
"handleUsernameChange"
,
"handlePasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import config from
\"
../../config
\"\r\n
import SignUp from
\"
./signUp/SignUp
\"\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
firstname: `${firstname}`,
\r\n
lastname: `${lastname}`,
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<SignUp />
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/401fba3eb4accfa279e9fa47a617958f.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const SignUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
const signUpFormRef = useRef(null);
\n
const [firstname, setfirstname] = useState('');
\n
const [lastname, setlastname] = useState('');
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n
const [confirmPassword, setConfirmPassword] = useState('');
\n\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);
\n\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 19,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 23,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 21,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 30,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 28,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 37,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 35,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 44,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 42,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 51,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 49,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 56,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 61,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 59,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 20,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 18,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 17,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 15,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(SignUp,
\"
X8Ck5qdBspERHliLS55/n2n2lgM=
\"
);
\n\n
_c = SignUp;
\n
export default SignUp;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
SignUp
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"SignUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"signUpFormRef"
,
"firstname"
,
"setfirstname"
,
"lastname"
,
"setlastname"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"confirmPassword"
,
"setConfirmPassword"
,
"toggleSignInFormVisible"
,
"handleSignUpFormSubmit"
,
"handlefirstnameChange"
,
"handlelastnameChange"
,
"handleUsernameChange"
,
"handlePasswordChange"
,
"handleConfirmPasswordChange"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react'
\r\n\r\n
const SignUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n
const signUpFormRef = useRef(null);
\r\n\r\n
const [firstname, setfirstname] = useState('')
\r\n
const [lastname, setlastname] = useState('')
\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n
const [confirmPassword, setConfirmPassword] = useState('');
\r\n\r\n
const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)
\r\n
return (
\r\n
< div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`
\r\n
}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div >
\r\n
)
\r\n
}
\r\n\r\n
export default SignUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/48d2e3f04715ef348e6afa1be4eb5dfc.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
signUp
\\\\
SignUp.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React from 'react';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const signUp = () => {
\n
_s();
\n\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false);
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className: `modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
ref: signUpFormRef,
\n
className:
\"
modal-content
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signUpForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign Up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 10,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignUpFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
First name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
firstname
\"
,
\n
type:
\"
text
\"
,
\n
value: firstname,
\n
onChange: handlefirstnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 14,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 12,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Last Name:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
lastname
\"
,
\n
type:
\"
text
\"
,
\n
value: lastname,
\n
onChange: handlelastnameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 21,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 19,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
email
\"
,
\n
type:
\"
text
\"
,
\n
value: username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 28,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 26,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 35,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 33,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Confirm Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: confirmPassword,
\n
onChange: handleConfirmPasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 42,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 40,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
className:
\"
password-requirements
\"
,
\n
children:
\"
Requirements: At least 8 characters, no parts of your username
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 47,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign Up
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
user-plus
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 52,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 50,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 11,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 9,
\n
columnNumber: 9
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 8,
\n
columnNumber: 7
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 7,
\n
columnNumber: 5
\n
}, this);
\n
};
\n\n
_s(signUp,
\"
gjne783thL/vp5Xvi1oK0r4e58s=
\"
);
\n\n
export default signUp;"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/signUp/SignUp.jsx"
],
"names"
:[
"React"
,
"signUp"
,
"signUpFormVisibilityState"
,
"showSignUpForm"
,
"useState"
,
"signUpFormRef"
,
"handleSignUpFormSubmit"
,
"firstname"
,
"handlefirstnameChange"
,
"lastname"
,
"handlelastnameChange"
,
"username"
,
"handleUsernameChange"
,
"password"
,
"handlePasswordChange"
,
"confirmPassword"
,
"handleConfirmPasswordChange"
],
"mappings"
:
";;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;;;AAEA,MAAMC,MAAM,GAAG,MAAM;AAAA;;AACnB,QAAM,CAACC,yBAAD,EAA4BC,cAA5B,IAA8CC,QAAQ,CAAC,KAAD,CAA5D;AAEA,sBACE;AAAK,IAAA,SAAS,EAAG,SAAQF,yBAAyB,GAAG,QAAH,GAAc,UAAW,EAA3E;AAAA,2BACE;AAAK,MAAA,GAAG,EAAEG,aAAV;AAAyB,MAAA,SAAS,EAAC,eAAnC;AAAA,6BACE;AAAK,QAAA,SAAS,EAAC,YAAf;AAAA,gCACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBADF,eAEE;AAAM,UAAA,QAAQ,EAAEC,sBAAhB;AAAA,kCACE;AAAA,mDAEE;AACE,cAAA,EAAE,EAAC,WADL;AACiB,cAAA,IAAI,EAAC,MADtB;AAEE,cAAA,KAAK,EAAEC,SAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBADF,eAQE;AAAA,kDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,MADrB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBARF,eAeE;AAAA,8CAEE;AACE,cAAA,EAAE,EAAC,OADL;AACa,cAAA,IAAI,EAAC,MADlB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAfF,eAsBE;AAAA,iDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,UADrB;AAEE,cAAA,KAAK,EAAEC,QAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAtBF,eA6BE;AAAA,yDAEE;AACE,cAAA,EAAE,EAAC,UADL;AACgB,cAAA,IAAI,EAAC,UADrB;AAEE,cAAA,KAAK,EAAEC,eAFT;AAGE,cAAA,QAAQ,EAAEC;AAHZ;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBA7BF,eAoCE;AAAO,YAAA,SAAS,EAAC,uBAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBApCF,eAuCE;AAAQ,YAAA,SAAS,EAAC,kBAAlB;AAAqC,YAAA,IAAI,EAAC,QAA1C;AAAA,uDAEE,QAAC,eAAD;AAAiB,cAAA,IAAI,EAAC;AAAtB;AAAA;AAAA;AAAA;AAAA,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA,kBAvCF;AAAA;AAAA;AAAA;AAAA;AAAA,gBAFF;AAAA;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA;AADF;AAAA;AAAA;AAAA;AAAA,UADF;AAqDD,CAxDD;;GAAMf,M;;AA0DN,eAAeA,MAAf"
,
"sourcesContent"
:[
"import React from 'react'
\r\n\r\n
const signUp = () => {
\r\n
const [signUpFormVisibilityState, showSignUpForm] = useState(false)
\r\n\r\n
return (
\r\n
<div className={`modal ${signUpFormVisibilityState ?
\"
active
\"
:
\"
inactive
\"
}`}>
\r\n
<div ref={signUpFormRef} className=
\"
modal-content
\"
>
\r\n
<div className=
\"
signUpForm
\"
>
\r\n
<h2>Sign Up</h2>
\r\n
<form onSubmit={handleSignUpFormSubmit}>
\r\n
<label>
\r\n
First name:
\r\n
<input
\r\n
id=
\"
firstname
\"
type=
\"
text
\"\r\n
value={firstname}
\r\n
onChange={handlefirstnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Last Name:
\r\n
<input
\r\n
id=
\"
lastname
\"
type=
\"
text
\"\r\n
value={lastname}
\r\n
onChange={handlelastnameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
email
\"
type=
\"
text
\"\r\n
value={username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<label>
\r\n
Confirm Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={confirmPassword}
\r\n
onChange={handleConfirmPasswordChange} />
\r\n
</label>
\r\n
<label className=
\"
password-requirements
\"
>
\r\n
Requirements: At least 8 characters, no parts of your username
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign Up
\r\n
<FontAwesomeIcon icon=
\"
user-plus
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
}
\r\n\r\n
export default signUp
\r\n
"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
client/node_modules/.cache/babel-loader/4ab656cbad60061891af37ed5910d9e7.json
0 → 100644
View file @
5690006f
{
"ast"
:
null
,
"code"
:
"var _jsxFileName =
\"
C:
\\\\
Users
\\\\
Bruger
\\\\
Desktop
\\\\
Web-projects
\\\\
pipit
\\\\
client
\\\\
src
\\\\
pages
\\\\
login
\\\\
Login.jsx
\"
,
\n
_s = $RefreshSig$();
\n\n
import React, { useState, useEffect, useRef } from 'react';
\n
import { Redirect } from 'react-router-dom';
\n
import { useOktaAuth } from '@okta/okta-react';
\n
import
\"
./Login.css
\"
;
\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
\n
import { NavLink } from 'react-router-dom';
\n
import signUp from './signUp/SignUp';
\n
import { jsxDEV as _jsxDEV } from
\"
react/jsx-dev-runtime
\"
;
\n\n
const Login = () => {
\n
_s();
\n\n
const {
\n
authState,
\n
oktaAuth
\n
} = useOktaAuth();
\n
const [sessionToken, setSessionToken] = useState();
\n
const [username, setUsername] = useState('');
\n
const [password, setPassword] = useState('');
\n\n
const handleUsernameChange = e => {
\n
setUsername(e.target.value);
\n
};
\n\n
const handlePasswordChange = e => {
\n
setPassword(e.target.value);
\n
};
\n\n
useEffect(() => {
\n
const pageClickEvent = e => {
\n
console.log(
\"
Click
\"
);
\n\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState);
\n
toggleSignInFormVisible();
\n
}
\n
}; // If the item is active (ie open) then listen for clicks
\n\n\n
if (signUpFormVisibilityState) {
\n
console.log(
\"
Add eventlistener
\"
);
\n
window.addEventListener('click', pageClickEvent);
\n
}
\n\n
return () => {
\n
console.log(
\"
Remove eventlistener
\"
);
\n
window.removeEventListener('click', pageClickEvent);
\n
};
\n
}, [signUpFormVisibilityState]);
\n
const userInputData = JSON.stringify({
\n
email: `${username}`,
\n
password: `${password}`
\n
});
\n
const loginRequestOptions = {
\n
method: 'POST',
\n
body: userInputData
\n
};
\n
const resetPasswordRequestOptions = {
\n
method: 'PUT',
\n
body: userInputData
\n
};
\n\n
const handleSignInFormSubmit = e => {
\n
e.preventDefault();
\n
oktaAuth.signInWithCredentials({
\n
username,
\n
password
\n
}).then(res => {
\n
const sessionToken = res.sessionToken;
\n
setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once
\n\n
oktaAuth.signInWithRedirect({
\n
sessionToken,
\n
originalUri: '/home'
\n
});
\n
}).catch(err => console.log('Found an error', err));
\n
};
\n\n
if (sessionToken) {
\n
// Hide form while sessionToken is converted into id/access tokens
\n
return null;
\n
}
\n\n
const handlePasswordReset = () => {
\n
if (!username == '') {
\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {
\n
if (!res.ok) {
\n
window.alert(
\"
Error: something went wrong
\"
);
\n
Promise.reject(
\"\"
);
\n
return;
\n
}
\n\n
if (res.ok) {// do something
\n
}
\n
});
\n
} else {
\n
window.alert(
\"
Please enter a valid email into the login form
\"
);
\n
}
\n
};
\n\n
if (!authState || !authState.isAuthenticated) {
\n
return /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
pageContainer
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
spacer
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
text-container
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h1
\"
, {
\n
children:
\"
Get started with PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 103,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
h5
\"
, {
\n
children:
\"
Track bugs and usabilty issues
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 104,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
signUpForm-show-button
\"
,
\n
onClick: toggleSignInFormVisible,
\n
children:
\"
Sign up
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 105,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 102,
\n
columnNumber: 11
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 101,
\n
columnNumber: 9
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
signInForm
\"
,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
h2
\"
, {
\n
children:
\"
Sign in to PipIt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 112,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
form
\"
, {
\n
onSubmit: handleSignInFormSubmit,
\n
children: [/*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Email:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
username
\"
,
\n
type:
\"
text
\"
,
\n
value: signUpFormVisibilityState ? null : username,
\n
onChange: handleUsernameChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 116,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 114,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
label
\"
, {
\n
children: [
\"
Password:
\"
, /*#__PURE__*/_jsxDEV(
\"
input
\"
, {
\n
id:
\"
password
\"
,
\n
type:
\"
password
\"
,
\n
value: signUpFormVisibilityState ? null : password,
\n
onChange: handlePasswordChange
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 123,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 121,
\n
columnNumber: 13
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
button
\"
, {
\n
className:
\"
formSubmitButton
\"
,
\n
type:
\"
submit
\"
,
\n
children: [
\"
Sign in
\\
xA0
\\
xA0
\"
, /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {
\n
icon:
\"
sign-in-alt
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 130,
\n
columnNumber: 15
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 128,
\n
columnNumber: 13
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 113,
\n
columnNumber: 11
\n
}, this), /*#__PURE__*/_jsxDEV(
\"
div
\"
, {
\n
className:
\"
password-forgot-prompt
\"
,
\n
children: /*#__PURE__*/_jsxDEV(
\"
span
\"
, {
\n
children: /*#__PURE__*/_jsxDEV(
\"
a
\"
, {
\n
onClick: handlePasswordReset,
\n
children:
\"
Forgot password
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 135,
\n
columnNumber: 15
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 134,
\n
columnNumber: 13
\n
}, this)
\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 133,
\n
columnNumber: 11
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 111,
\n
columnNumber: 9
\n
}, this)]
\n
}, void 0, true, {
\n
fileName: _jsxFileName,
\n
lineNumber: 100,
\n
columnNumber: 7
\n
}, this);
\n
} else {
\n
return /*#__PURE__*/_jsxDEV(Redirect, {
\n
to:
\"
/home
\"\n
}, void 0, false, {
\n
fileName: _jsxFileName,
\n
lineNumber: 142,
\n
columnNumber: 12
\n
}, this);
\n
}
\n
};
\n\n
_s(Login,
\"
wrhmVp2lhpyin9y/fggBjGZq26c=
\"
, false, function () {
\n
return [useOktaAuth];
\n
});
\n\n
_c = Login;
\n
export default Login;
\n\n
var _c;
\n\n
$RefreshReg$(_c,
\"
Login
\"
);"
,
"map"
:{
"version"
:
3
,
"sources"
:[
"C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"
],
"names"
:[
"React"
,
"useState"
,
"useEffect"
,
"useRef"
,
"Redirect"
,
"useOktaAuth"
,
"FontAwesomeIcon"
,
"NavLink"
,
"signUp"
,
"Login"
,
"authState"
,
"oktaAuth"
,
"sessionToken"
,
"setSessionToken"
,
"username"
,
"setUsername"
,
"password"
,
"setPassword"
,
"handleUsernameChange"
,
"e"
,
"target"
,
"value"
,
"handlePasswordChange"
,
"pageClickEvent"
,
"console"
,
"log"
,
"signUpFormRef"
,
"current"
,
"contains"
,
"signUpFormVisibilityState"
,
"toggleSignInFormVisible"
,
"window"
,
"addEventListener"
,
"removeEventListener"
,
"userInputData"
,
"JSON"
,
"stringify"
,
"email"
,
"loginRequestOptions"
,
"method"
,
"body"
,
"resetPasswordRequestOptions"
,
"handleSignInFormSubmit"
,
"preventDefault"
,
"signInWithCredentials"
,
"then"
,
"res"
,
"signInWithRedirect"
,
"originalUri"
,
"catch"
,
"err"
,
"handlePasswordReset"
,
"fetch"
,
"config"
,
"serviceAPI"
,
"resetPasswordURL"
,
"ok"
,
"alert"
,
"Promise"
,
"reject"
,
"isAuthenticated"
],
"mappings"
:
"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"
,
"sourcesContent"
:[
"import React, { useState, useEffect, useRef } from 'react';
\r\n
import { Redirect } from 'react-router-dom'
\r\n
import { useOktaAuth } from '@okta/okta-react';
\r\n
import
\"
./Login.css
\"\r\n
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
\r\n
import { NavLink } from 'react-router-dom';
\r\n
import signUp from './signUp/SignUp';
\r\n\r\n
const Login = () => {
\r\n
const { authState, oktaAuth } = useOktaAuth();
\r\n
const [sessionToken, setSessionToken] = useState()
\r\n\r\n
const [username, setUsername] = useState('');
\r\n
const [password, setPassword] = useState('');
\r\n\r\n
const handleUsernameChange = (e) => {
\r\n
setUsername(e.target.value);
\r\n
};
\r\n\r\n
const handlePasswordChange = (e) => {
\r\n
setPassword(e.target.value)
\r\n
}
\r\n\r\n
useEffect(() => {
\r\n
const pageClickEvent = (e) => {
\r\n
console.log(
\"
Click
\"
)
\r\n
if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {
\r\n
console.log(
\"
Form visible:
\"
+ signUpFormVisibilityState)
\r\n
toggleSignInFormVisible()
\r\n
}
\r\n
};
\r\n\r\n
// If the item is active (ie open) then listen for clicks
\r\n
if (signUpFormVisibilityState) {
\r\n
console.log(
\"
Add eventlistener
\"
)
\r\n
window.addEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
return () => {
\r\n
console.log(
\"
Remove eventlistener
\"
)
\r\n
window.removeEventListener('click', pageClickEvent);
\r\n
}
\r\n\r\n
}, [signUpFormVisibilityState]);
\r\n\r\n
const userInputData = JSON.stringify({
\r\n
email: `${username}`,
\r\n
password: `${password}`
\r\n
})
\r\n\r\n
const loginRequestOptions = {
\r\n
method: 'POST',
\r\n
body: userInputData
\r\n
};
\r\n\r\n
const resetPasswordRequestOptions = {
\r\n
method: 'PUT',
\r\n
body: userInputData
\r\n
}
\r\n\r\n
const handleSignInFormSubmit = (e) => {
\r\n
e.preventDefault();
\r\n\r\n
oktaAuth.signInWithCredentials({ username, password })
\r\n
.then(res => {
\r\n
const sessionToken = res.sessionToken;
\r\n
setSessionToken(sessionToken);
\r\n
// sessionToken is a one-use token, so make sure this is only called once
\r\n
oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });
\r\n
})
\r\n
.catch(err => console.log('Found an error', err));
\r\n
};
\r\n\r\n
if (sessionToken) {
\r\n
// Hide form while sessionToken is converted into id/access tokens
\r\n
return null;
\r\n
}
\r\n\r\n
const handlePasswordReset = () => {
\r\n
if (!username == '') {
\r\n
fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)
\r\n
.then((res) => {
\r\n
if (!res.ok) {
\r\n
window.alert(
\"
Error: something went wrong
\"
)
\r\n
Promise.reject(
\"\"
)
\r\n
return
\r\n
}
\r\n
if (res.ok) {
\r\n
// do something
\r\n
}
\r\n
})
\r\n
}
\r\n
else {
\r\n
window.alert(
\"
Please enter a valid email into the login form
\"
)
\r\n
}
\r\n
}
\r\n\r\n
if (!authState || !authState.isAuthenticated) {
\r\n
return (
\r\n
<div className=
\"
pageContainer
\"
>
\r\n
<div className=
\"
spacer
\"
>
\r\n
<div className=
\"
text-container
\"
>
\r\n
<h1>Get started with PipIt</h1>
\r\n
<h5>Track bugs and usabilty issues</h5>
\r\n
<button className=
\"
signUpForm-show-button
\"
onClick={toggleSignInFormVisible}>
\r\n
Sign up
\r\n
</button>
\r\n
</div>
\r\n
</div>
\r\n\r\n
<div className=
\"
signInForm
\"
>
\r\n
<h2>Sign in to PipIt</h2>
\r\n
<form onSubmit={handleSignInFormSubmit}>
\r\n
<label>
\r\n
Email:
\r\n
<input
\r\n
id=
\"
username
\"
type=
\"
text
\"\r\n
value={signUpFormVisibilityState ? null : username}
\r\n
onChange={handleUsernameChange} />
\r\n
</label>
\r\n
<label>
\r\n
Password:
\r\n
<input
\r\n
id=
\"
password
\"
type=
\"
password
\"\r\n
value={signUpFormVisibilityState ? null : password}
\r\n
onChange={handlePasswordChange} />
\r\n
</label>
\r\n
<button className=
\"
formSubmitButton
\"
type=
\"
submit
\"
>
\r\n
Sign in
\r\n
<FontAwesomeIcon icon=
\"
sign-in-alt
\"
></FontAwesomeIcon>
\r\n
</button>
\r\n
</form>
\r\n
<div className=
\"
password-forgot-prompt
\"
>
\r\n
<span>
\r\n
<a onClick={handlePasswordReset}>Forgot password</a>
\r\n
</span>
\r\n
</div>
\r\n
</div>
\r\n
</div>
\r\n
)
\r\n
} else {
\r\n
return <Redirect to=
\"
/home
\"
/>
\r\n
}
\r\n
}
\r\n\r\n
export default Login"
]},
"metadata"
:{},
"sourceType"
:
"module"
}
\ No newline at end of file
Prev
1
2
3
4
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment