From 9c12180bbaeda533f163785cb8750c3e9e0795bc Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Fri, 4 Jul 2025 11:30:20 +0200 Subject: [PATCH 01/20] fix: allow MMs to have multiple places --- src/config/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/constants.js b/src/config/constants.js index 0b7de032..47e4d2ed 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -354,7 +354,7 @@ export const GROUPS_DROPDOWN_PER_PAGE = 1000000 // make sure we are getting all /** * The list of challenge types which can have multiple prizes */ -export const CHALLENGE_TYPES_WITH_MULTIPLE_PRIZES = ['Challenge'] +export const CHALLENGE_TYPES_WITH_MULTIPLE_PRIZES = ['Challenge', 'Marathon Match'] /** * All the repeating messages. From e551d124df1f9c7da63ba94bb19c0d6a038e26d3 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Fri, 25 Jul 2025 23:45:19 +0200 Subject: [PATCH 02/20] feat: modifications on copilot addition to project --- src/components/Users/Users.module.scss | 11 +- src/components/Users/index.js | 9 +- src/components/Users/user-add.modal.js | 238 +++++++++++++++---------- 3 files changed, 155 insertions(+), 103 deletions(-) diff --git a/src/components/Users/Users.module.scss b/src/components/Users/Users.module.scss index 7451b0c6..a37c2395 100644 --- a/src/components/Users/Users.module.scss +++ b/src/components/Users/Users.module.scss @@ -40,6 +40,11 @@ } } +.textContent { + font-size: 18px; + margin-top: 25px; +} + .row { display: flex; @@ -400,7 +405,7 @@ justify-content: center; } -.addButtonContainer { +.addButtonContainer, .buttonWrapper { display: flex; justify-content: flex-start; height: 30px; @@ -412,10 +417,6 @@ } } -.addUserContentContainer { - -} - .tcRadioButton { .tc-radioButton-label { @include roboto-light(); diff --git a/src/components/Users/index.js b/src/components/Users/index.js index 5ddc2e67..46ab4af6 100644 --- a/src/components/Users/index.js +++ b/src/components/Users/index.js @@ -63,8 +63,12 @@ class Users extends Component { }) } - resetAddUserState () { + resetAddUserState (doReloadList) { this.setState({ showAddUserModal: false }) + + if (doReloadList) { + + } } resetInviteUserState () { @@ -225,6 +229,9 @@ class Users extends Component { addNewProjectMember={this.props.addNewProjectMember} onMemberInvited={this.props.addNewProjectInvite} onClose={this.resetAddUserState} + projectOption={this.state.projectOption} + projectMembers={projectMembers} + updateProjectMember={updateProjectMember} /> ) } diff --git a/src/components/Users/user-add.modal.js b/src/components/Users/user-add.modal.js index 58b68d20..c6849115 100644 --- a/src/components/Users/user-add.modal.js +++ b/src/components/Users/user-add.modal.js @@ -6,7 +6,7 @@ import Modal from '../Modal' import SelectUserAutocomplete from '../SelectUserAutocomplete' import { PROJECT_ROLES } from '../../config/constants' import PrimaryButton from '../Buttons/PrimaryButton' -import { addUserToProject, inviteUserToProject } from '../../services/projects' +import { addUserToProject, inviteUserToProject, updateProjectMemberRole } from '../../services/projects' import styles from './Users.module.scss' @@ -14,12 +14,22 @@ const theme = { container: styles.modalContainer } -const UserAddModalContent = ({ projectId, addNewProjectMember, onMemberInvited, onClose }) => { +const UserAddModalContent = ({ + projectMembers, + projectOption, + projectId, + addNewProjectMember, + onMemberInvited, + onClose, + updateProjectMember +}) => { const [userToAdd, setUserToAdd] = useState(null) const [userPermissionToAdd, setUserPermissionToAdd] = useState(PROJECT_ROLES.READ) const [showSelectUserError, setShowSelectUserError] = useState(false) const [addUserError, setAddUserError] = useState(null) const [isAdding, setIsAdding] = useState(false) + const [isUserAddingFailed, setUserAddingFailed] = useState(false) + const [existingRole, setExistingRole] = useState('') const onUpdateUserToAdd = (option) => { if (option && option.value) { @@ -52,8 +62,12 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onMemberInvited, }) if (failed) { const error = get(failed, '0.message', 'User cannot be invited') + const errorCode = get(failed, '0.error') + const role = get(failed, '0.role') setAddUserError(error) setIsAdding(false) + setUserAddingFailed(errorCode === 'ALREADY_MEMBER') + setExistingRole(role) } else if (rest.message) { setAddUserError(rest.message) setIsAdding(false) @@ -74,113 +88,140 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onMemberInvited, } } + const onConfirmCopilotRoleChange = async () => { + const member = projectMembers.find(item => item.userId === userToAdd.userId) + const response = await updateProjectMemberRole(projectId, member.id, 'copilot') + updateProjectMember(response) + onClose(true) + } + + const onCancelCopilotRoleChange = () => { + setUserAddingFailed(false) + setAddUserError('') + } + return ( -
-
Add User
-
-
-
- Member* : -
-
- + { + isUserAddingFailed && (existingRole === 'observer' || existingRole === 'customer' || existingRole === 'copilot') && ( +
+
{`The copilot ${userToAdd.handle} is part of ${projectOption.label} project with ${existingRole} role.`}
+
+ +
- {showSelectUserError && ( -
-
Please select a member.
-
- )} -
-
- -
-
-
- setUserPermissionToAdd(PROJECT_ROLES.READ)} - /> - + ) + } + { + !isUserAddingFailed && ( +
+
Add User
+
+
+
+ Member* : +
+
+ +
-
-
-
- setUserPermissionToAdd(PROJECT_ROLES.WRITE)} - /> - + {showSelectUserError && ( +
+
Please select a member.
+
+ )} +
+
+ +
+
+
+ setUserPermissionToAdd(PROJECT_ROLES.READ)} + /> + +
+
+
+
+ setUserPermissionToAdd(PROJECT_ROLES.WRITE)} + /> + +
+
+
+
+ setUserPermissionToAdd(PROJECT_ROLES.MANAGER)} + /> + +
+
+
+
+ setUserPermissionToAdd(PROJECT_ROLES.COPILOT)} + /> + +
+
+ {addUserError && ( +
{addUserError}
+ )}
-
-
- setUserPermissionToAdd(PROJECT_ROLES.MANAGER)} +
+
+ -
-
-
-
- setUserPermissionToAdd(PROJECT_ROLES.COPILOT)} +
+ -
- {addUserError && ( -
{addUserError}
- )} -
-
-
- -
-
- -
-
-
+ ) + } ) } @@ -188,7 +229,10 @@ UserAddModalContent.propTypes = { projectId: PropTypes.number.isRequired, addNewProjectMember: PropTypes.func.isRequired, onMemberInvited: PropTypes.func.isRequired, - onClose: PropTypes.func.isRequired + onClose: PropTypes.func.isRequired, + projectOption: PropTypes.any.isRequired, + projectMembers: PropTypes.array.isRequired, + updateProjectMember: PropTypes.func.isRequired } export default UserAddModalContent From 537a94b828b6c12ee6f5f9a67030161bcf6e0bc7 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Mon, 28 Jul 2025 13:08:26 +0200 Subject: [PATCH 03/20] fix: action string --- src/components/Users/user-add.modal.js | 5 +++-- src/services/projects.js | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/Users/user-add.modal.js b/src/components/Users/user-add.modal.js index c6849115..346fc3cd 100644 --- a/src/components/Users/user-add.modal.js +++ b/src/components/Users/user-add.modal.js @@ -90,7 +90,8 @@ const UserAddModalContent = ({ const onConfirmCopilotRoleChange = async () => { const member = projectMembers.find(item => item.userId === userToAdd.userId) - const response = await updateProjectMemberRole(projectId, member.id, 'copilot') + const action = member.role === 'manager' ? 'complete-copilot-requests' : '' + const response = await updateProjectMemberRole(projectId, member.id, 'copilot', action) updateProjectMember(response) onClose(true) } @@ -103,7 +104,7 @@ const UserAddModalContent = ({ return ( { - isUserAddingFailed && (existingRole === 'observer' || existingRole === 'customer' || existingRole === 'copilot') && ( + isUserAddingFailed && (existingRole === 'observer' || existingRole === 'customer' || existingRole === 'copilot' || existingRole === 'manager') && (
{`The copilot ${userToAdd.handle} is part of ${projectOption.label} project with ${existingRole} role.`}
diff --git a/src/services/projects.js b/src/services/projects.js index a3cf43c0..1a03221c 100644 --- a/src/services/projects.js +++ b/src/services/projects.js @@ -103,9 +103,10 @@ export async function fetchProjectPhases (id) { * @param newRole the new role * @returns {Promise<*>} */ -export async function updateProjectMemberRole (projectId, memberRecordId, newRole) { +export async function updateProjectMemberRole (projectId, memberRecordId, newRole, action) { const response = await axiosInstance.patch(`${PROJECTS_API_URL}/${projectId}/members/${memberRecordId}`, { - role: newRole + role: newRole, + action }) return _.get(response, 'data') } From 59cb7d70258058003a6e67c4752edce4e3d23b66 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Mon, 28 Jul 2025 13:15:06 +0200 Subject: [PATCH 04/20] fix: action string --- src/components/Users/index.js | 6 +----- src/components/Users/user-add.modal.js | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/components/Users/index.js b/src/components/Users/index.js index 46ab4af6..cfbe5671 100644 --- a/src/components/Users/index.js +++ b/src/components/Users/index.js @@ -63,12 +63,8 @@ class Users extends Component { }) } - resetAddUserState (doReloadList) { + resetAddUserState () { this.setState({ showAddUserModal: false }) - - if (doReloadList) { - - } } resetInviteUserState () { diff --git a/src/components/Users/user-add.modal.js b/src/components/Users/user-add.modal.js index 346fc3cd..12a269e4 100644 --- a/src/components/Users/user-add.modal.js +++ b/src/components/Users/user-add.modal.js @@ -93,7 +93,7 @@ const UserAddModalContent = ({ const action = member.role === 'manager' ? 'complete-copilot-requests' : '' const response = await updateProjectMemberRole(projectId, member.id, 'copilot', action) updateProjectMember(response) - onClose(true) + onClose() } const onCancelCopilotRoleChange = () => { @@ -104,7 +104,7 @@ const UserAddModalContent = ({ return ( { - isUserAddingFailed && (existingRole === 'observer' || existingRole === 'customer' || existingRole === 'copilot' || existingRole === 'manager') && ( + isUserAddingFailed && (['observer', 'customer', 'copilot', 'manager'].includes(existingRole)) && (
{`The copilot ${userToAdd.handle} is part of ${projectOption.label} project with ${existingRole} role.`}
From 27fc0b84d68464158bd80b3253dbd91434c4212b Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Thu, 31 Jul 2025 22:09:08 +0200 Subject: [PATCH 05/20] fix: show error when invite comes from an closed opportunity --- src/containers/ProjectInvitations/index.js | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/containers/ProjectInvitations/index.js b/src/containers/ProjectInvitations/index.js index 58e6f20d..fc9c4e49 100644 --- a/src/containers/ProjectInvitations/index.js +++ b/src/containers/ProjectInvitations/index.js @@ -46,16 +46,22 @@ const ProjectInvitations = ({ match, auth, isProjectLoading, history, projectDet const updateInvite = useCallback(async (status, source) => { setIsUpdating(status) - await updateProjectMemberInvite(projectId, invitation.id, status, source) - - // await for the project details to propagate - await delay(1000) - await loadProjectInvites(projectId) - toastr.success('Success', `Successfully ${status} the invitation.`) - - // await for the project details to fetch - await delay(1000) - history.push(status === PROJECT_MEMBER_INVITE_STATUS_ACCEPTED ? `/projects/${projectId}/challenges` : '/projects') + try { + await updateProjectMemberInvite(projectId, invitation.id, status, source) + + // await for the project details to propagate + await delay(1000) + await loadProjectInvites(projectId) + toastr.success('Success', `Successfully ${status} the invitation.`) + + // await for the project details to fetch + await delay(1000) + history.push(status === PROJECT_MEMBER_INVITE_STATUS_ACCEPTED ? `/projects/${projectId}/challenges` : '/projects') + } catch (e) { + toastr.error('Error', e.response.data.message) + await delay(1000) + history.push('/projects') + } }, [projectId, invitation, loadProjectInvites, history]) const acceptInvite = useCallback(() => updateInvite(PROJECT_MEMBER_INVITE_STATUS_ACCEPTED, source), [updateInvite, source]) From fb89618462b7fb4c57bede8750845a9346668059 Mon Sep 17 00:00:00 2001 From: himaniraghav3 Date: Fri, 1 Aug 2025 20:14:44 +0530 Subject: [PATCH 06/20] PM-1270 Exclude cancelled and completed projects from copilot requests creation --- src/components/ChallengesComponent/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index dd932641..6502354a 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import { Helmet } from 'react-helmet' import { Link } from 'react-router-dom' import ProjectStatus from './ProjectStatus' -import { PROJECT_ROLES, PROJECT_STATUS, COPILOTS_URL } from '../../config/constants' +import { PROJECT_ROLES, PROJECT_STATUS, COPILOTS_URL, CHALLENGE_STATUS } from '../../config/constants' import { PrimaryButton, OutlineButton } from '../Buttons' import ChallengeList from './ChallengeList' import styles from './ChallengesComponent.module.scss' @@ -53,6 +53,12 @@ const ChallengesComponent = ({ const isReadOnly = checkReadOnlyRoles(auth.token) || loginUserRoleInProject === PROJECT_ROLES.READ const isAdminOrCopilot = checkAdminOrCopilot(auth.token, activeProject) + const projectStatus = activeProject && activeProject.status + ? activeProject.status.toUpperCase() + : '' + const isCompletedOrCancelled = + projectStatus === CHALLENGE_STATUS.CANCELLED || projectStatus === CHALLENGE_STATUS.COMPLETED + useEffect(() => { const loggedInUser = auth.user const projectMembers = activeProject.members @@ -94,7 +100,7 @@ const ChallengesComponent = ({ className={styles.btnOutline} /> )} - {(checkAdmin(auth.token) || checkManager(auth.token)) && ( + {(checkAdmin(auth.token) || checkManager(auth.token)) && !isCompletedOrCancelled && ( Date: Fri, 1 Aug 2025 21:25:16 +0200 Subject: [PATCH 07/20] fix: added projectId query param to request form url --- src/components/ChallengesComponent/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index dd932641..038461b1 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -98,7 +98,7 @@ const ChallengesComponent = ({ )} From 25c01d655ce95ad9311812f57c9cc000c60e76b3 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Fri, 1 Aug 2025 21:25:43 +0200 Subject: [PATCH 08/20] fix: added projectId query param to request form url --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e5ee2959..5eefc91f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -152,7 +152,7 @@ workflows: context: org-global filters: &filters-dev branches: - only: ["develop", "PM-803_wm-regression-fixes", "PM-902_show-all-projects-on-challenge-page", "pm-1355_1"] + only: ["develop", "PM-803_wm-regression-fixes", "PM-902_show-all-projects-on-challenge-page", "pm-1365"] # Production builds are exectuted only on tagged commits to the # master branch. From 15f37849a1f353e6dbec2c7e5f8747599a102313 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 11 Aug 2025 14:51:36 +0300 Subject: [PATCH 09/20] PM-1608 - update project search: use exact match --- src/actions/projects.js | 2 +- src/actions/users.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/projects.js b/src/actions/projects.js index dfc6bf9b..89b1f6b5 100644 --- a/src/actions/projects.js +++ b/src/actions/projects.js @@ -52,7 +52,7 @@ function _loadProjects (projectNameOrIdFilter = '', paramFilters = {}) { if (!isNaN(projectNameOrIdFilter)) { // if it is number filters['id'] = parseInt(projectNameOrIdFilter, 10) } else { // text search - filters['keyword'] = decodeURIComponent(projectNameOrIdFilter) + filters['keyword'] = `"${decodeURIComponent(projectNameOrIdFilter)}"` } } diff --git a/src/actions/users.js b/src/actions/users.js index 31a65ab2..d1c51ec4 100644 --- a/src/actions/users.js +++ b/src/actions/users.js @@ -82,7 +82,7 @@ export function searchUserProjects (isAdmin = true, keyword) { sort: 'updatedAt desc', perPage: 20, page: 1, - keyword + keyword: `"${keyword}"` } if (!isAdmin) { filters['memberOnly'] = true From 7a1ed528dfb0f2a3ba16c0a4335ab946dcfa3794 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 11 Aug 2025 14:51:52 +0300 Subject: [PATCH 10/20] PM-1608 - project search: update search input --- src/components/Select/styles.js | 3 +++ src/components/Users/Users.module.scss | 2 -- src/containers/Projects/styles.module.scss | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/Select/styles.js b/src/components/Select/styles.js index a2b44a38..7a0c05b1 100644 --- a/src/components/Select/styles.js +++ b/src/components/Select/styles.js @@ -55,6 +55,9 @@ export default { paddingRight: '6px', paddingLeft: '10px', border: 'none', + width: '100%', + display: 'grid', + gridTemplateColumns: '1fr', input: { width: '100% !important', height: 'auto !important', diff --git a/src/components/Users/Users.module.scss b/src/components/Users/Users.module.scss index a37c2395..93eaa77e 100644 --- a/src/components/Users/Users.module.scss +++ b/src/components/Users/Users.module.scss @@ -52,8 +52,6 @@ align-items: center; input { - max-width: 280px; - @include upto-sm { display: block; padding-bottom: 10px; diff --git a/src/containers/Projects/styles.module.scss b/src/containers/Projects/styles.module.scss index ef18461d..3fdceafb 100644 --- a/src/containers/Projects/styles.module.scss +++ b/src/containers/Projects/styles.module.scss @@ -51,6 +51,10 @@ border-radius: 3px; border: 1px solid $light-gray; background-color: $lighter-gray; + + > div { + width: 100%; + } } .tcCheckbox { From 7c76389ecb84f392bdade5198cf3d6dc41bc3d57 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Mon, 11 Aug 2025 15:39:36 +0300 Subject: [PATCH 11/20] PM-1609 - add navigation for user management --- src/components/Buttons/OutlineButton/index.js | 4 +- src/components/ChallengesComponent/index.js | 12 +++++ src/components/Users/index.js | 52 +++++++++++++------ src/containers/Users/index.js | 18 +++++-- 4 files changed, 66 insertions(+), 20 deletions(-) diff --git a/src/components/Buttons/OutlineButton/index.js b/src/components/Buttons/OutlineButton/index.js index 9d5f6914..5bc8140e 100644 --- a/src/components/Buttons/OutlineButton/index.js +++ b/src/components/Buttons/OutlineButton/index.js @@ -22,7 +22,7 @@ const OutlineButton = ({ type, text, link, onClick, url, className, submit, disa if (!_.isEmpty(link)) { return ( - + {text} ) @@ -38,7 +38,7 @@ const OutlineButton = ({ type, text, link, onClick, url, className, submit, disa OutlineButton.propTypes = { type: PropTypes.string.isRequired, text: PropTypes.string.isRequired, - link: PropTypes.string, + link: PropTypes.oneOfType([PropTypes.string, PropTypes.object]), url: PropTypes.string, className: PropTypes.string, onClick: PropTypes.func, diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index b9181c20..a110244a 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -91,6 +91,18 @@ const ChallengesComponent = ({
{activeProject && activeProject.id && !isReadOnly ? (
+ {(checkAdmin(auth.token) || checkManager(auth.token)) && ( + + )} {isAdminOrCopilot && ( { return { @@ -204,20 +214,28 @@ class Users extends Component {
- { - showAddUser && ( -
- this.onAddUserClick()} /> - this.onInviteUserClick()} /> -
- ) - } +
+ { + showAddUser && ( + <> + this.onAddUserClick()} /> + this.onInviteUserClick()} /> + + ) + } + {projectOption && ( + + )} +
{ this.state.showAddUserModal && ( { } Users.propTypes = { + location: PT.object.isRequired, projects: PT.arrayOf(PT.object), resultSearchUserProjects: PT.arrayOf(PT.object), auth: PT.object, @@ -220,4 +232,4 @@ const mapDispatchToProps = { loadNextProjects } -export default connect(mapStateToProps, mapDispatchToProps)(Users) +export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Users)) From fb2d638e43dbc95b1c219d8423b2daf9dfef8cba Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 09:28:08 +1000 Subject: [PATCH 12/20] Limit challenge name to only letters and numbers to avoid Informix issues --- src/components/ChallengeEditor/ChallengeName-Field/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ChallengeEditor/ChallengeName-Field/index.js b/src/components/ChallengeEditor/ChallengeName-Field/index.js index c5cbbd28..470bb7e7 100644 --- a/src/components/ChallengeEditor/ChallengeName-Field/index.js +++ b/src/components/ChallengeEditor/ChallengeName-Field/index.js @@ -54,4 +54,4 @@ ChallengeNameField.propTypes = { onUpdateInput: PropTypes.func.isRequired } -export default ChallengeNameField \ No newline at end of file +export default ChallengeNameField From 8990be2a654952b85e3cd5fcf91f9dc5a61cd2db Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 09:52:23 +1000 Subject: [PATCH 13/20] Revert "Hacks for v6 challenge API" This reverts commit a2ec0d93fb2d891ddeae8328ec20f60afb411fcd. --- .gitignore | 2 +- config/constants/development.js | 16 +-- local.topcoder-dev.com-key.pem | 28 ++++ local.topcoder-dev.com.pem | 26 ++++ localhost-key.pem | 28 ++++ localhost.pem | 26 ++++ package-lock.json | 129 ------------------ package.json | 3 +- server.js | 4 +- .../ChallengeViewTabs/index.js | 2 +- .../ChallengeEditor/Copilot-Field/index.js | 3 +- src/components/ChallengeEditor/index.js | 16 +-- .../ChallengeCard/index.js | 2 +- src/config/constants.js | 8 +- src/containers/ChallengeEditor/index.js | 4 +- 15 files changed, 137 insertions(+), 160 deletions(-) create mode 100644 local.topcoder-dev.com-key.pem create mode 100644 local.topcoder-dev.com.pem create mode 100644 localhost-key.pem create mode 100644 localhost.pem diff --git a/.gitignore b/.gitignore index a556994b..c4b8ad9b 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ yarn-error.log* *.env *.vscode -*.pem + # e2e test case test-automation/temp test-automation/test-results \ No newline at end of file diff --git a/config/constants/development.js b/config/constants/development.js index e6fc0644..e06c0902 100644 --- a/config/constants/development.js +++ b/config/constants/development.js @@ -12,18 +12,18 @@ module.exports = { ACCOUNTS_APP_LOGIN_URL: `https://accounts-auth0.${DOMAIN}`, COMMUNITY_APP_URL: `https://www.${DOMAIN}`, MEMBER_API_URL: `${DEV_API_HOSTNAME}/v5/members`, - CHALLENGE_API_URL: `${DEV_API_HOSTNAME}/v6/challenges`, + CHALLENGE_API_URL: `${DEV_API_HOSTNAME}/v5/challenges`, CHALLENGE_API_VERSION: '1.1.0', - CHALLENGE_TIMELINE_TEMPLATES_URL: `${DEV_API_HOSTNAME}/v6/timeline-templates`, - CHALLENGE_TYPES_URL: `${DEV_API_HOSTNAME}/v6/challenge-types`, - CHALLENGE_TRACKS_URL: `${DEV_API_HOSTNAME}/v6/challenge-tracks`, - CHALLENGE_PHASES_URL: `${DEV_API_HOSTNAME}/v6/challenge-phases`, - CHALLENGE_TIMELINES_URL: `${DEV_API_HOSTNAME}/v6/challenge-timelines`, + CHALLENGE_TIMELINE_TEMPLATES_URL: `${DEV_API_HOSTNAME}/v5/timeline-templates`, + CHALLENGE_TYPES_URL: `${DEV_API_HOSTNAME}/v5/challenge-types`, + CHALLENGE_TRACKS_URL: `${DEV_API_HOSTNAME}/v5/challenge-tracks`, + CHALLENGE_PHASES_URL: `${DEV_API_HOSTNAME}/v5/challenge-phases`, + CHALLENGE_TIMELINES_URL: `${DEV_API_HOSTNAME}/v5/challenge-timelines`, PROJECT_API_URL: `${DEV_API_HOSTNAME}/v5/projects`, GROUPS_API_URL: `${DEV_API_HOSTNAME}/v5/groups`, TERMS_API_URL: `${DEV_API_HOSTNAME}/v5/terms`, - RESOURCES_API_URL: `${DEV_API_HOSTNAME}/v6/resources`, - RESOURCE_ROLES_API_URL: `${DEV_API_HOSTNAME}/v6/resource-roles`, + RESOURCES_API_URL: `${DEV_API_HOSTNAME}/v5/resources`, + RESOURCE_ROLES_API_URL: `${DEV_API_HOSTNAME}/v5/resource-roles`, SUBMISSIONS_API_URL: `${DEV_API_HOSTNAME}/v5/submissions`, REVIEW_TYPE_API_URL: `${DEV_API_HOSTNAME}/v5/reviewTypes`, SUBMISSION_REVIEW_APP_URL: `https://submission-review.${DOMAIN}/challenges`, diff --git a/local.topcoder-dev.com-key.pem b/local.topcoder-dev.com-key.pem new file mode 100644 index 00000000..c09c3687 --- /dev/null +++ b/local.topcoder-dev.com-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDSaA4EMTt5Dgoc +VnvkZx1g0LoRfFDjM+iKbL/rly9c71gnqIwdGZNo3t14XdAE+soGZwsiclmBIHXb +6AfY9mOjSeCsWyqKuCGNp7kvP6/rQ/OAeWiVqa7y339Fl2JTEGnHd0aMps9hdSMR +UINpkBkMKTTeVVoF1d2Ybv5G8bwMOg0xyOConwla2yZoCZWUffHH2er93t8n0r0I +L3kYOyRNQUeEH01+bjwilVAEIih6lT78mKMp3Bj49RC1+IDr0OnLEp4onBwIhXGX +UCpxGvacxRXFGIx/1JvReHnKMCJw+YVthYv4PfPbsqf04zYjdRv1WH8SPy0QbN7U +J6Xs2K1HAgMBAAECggEAWWSkL9vK7M+uNAP6dzvoG24S38L1itJPBiDWGX4OPWnj +BlZx0RtAqdmmNrGE49i5ZKb68BOtO1NTP68BRojIJGQK9K93D6DTgJ+16gEg+M/R +8M+kQ5HoJoAWTrbWq3vZtUlTzAZDLaDa2UxfyMXUHnqTX7LboIcQsubVWcbyoi5y +myReflYeootcbw1uuSrIAIUubDnJHhTTl+A/Sh65orNgJhhCkwNAxnYlm1bjPHUr +NKkqjD9kRfS3/VOYOSmdB3sfQ7onTILhmqtvvtAQbdVuOPDjEtSdlU+QlR0rCB2U +VrxsWk20EANVM8uam4x54cZfsAmV9wOMXhlCK80LQQKBgQDlX43y/P/5PbmRPm+u +9iStmQJPfLEdY6rstov+LXaw0tXkBlLIsr/CCvidyhqQjo7MbCNDRU39SlaMyuK8 +QyQfgkpuFojfffKFXFg9aX8d1+AjT9x6rbYF6Mya7QjQT86W4Wb01RUMvgBS/yzu +WnwU/nUWqjHP8OfWo6H/B+Ts3wKBgQDq1NnJfpCQa5fwMtCbkilyRSeRoreCN8yX +0vIULdQxj9nNPyDXN9LsmRMdhr2TZ42ahflMbNSRGLW0CiozmylCBJjnqyl1VhL1 +X5aOh9l9qB4+fVVoir1O8xr0VcOLmWJGqRece0sxf6ye0I9+/n2hJZeGW2OyN9Cc +70QTx4BkmQKBgQCnlRrW73XtmeVccuuSPxApLWN8w7N7r3gQHodFm93d7wyK3vvY +2pAzq2RdlG24NA+s100kNxx19LwrfYgO2FcqFj1fFWPHNfPc780ggVV4bmK6Kf0C +PKyCwMXMY2ZPHB/qKKDaPFx2xNLj0L/5HW8Ov6K4fnyKWo5oSYFwHUpqrQKBgQCy +i/WvGxkFhZj3W1t6/Y2fwW7Nb1+BlbVsNkozB4lPyaT7RiVNHbe0hsqe54SaX+Ct +fXHIJvMUAyqcYiImLLIY7O/pLR2PhktR30TUx/uYa8vbDWZz3xECxxpWbiMIsC2l +tgkqxB+u2flAoyiHkS2p6bAkyrWpmoB14gHr3AMF+QKBgA+1sH680K56YB9P0FBI +EDZW51oJmA4r8w8IZvsAtkZHVof9/3RYWfO/E5ePfSl+yRpeNB4bo/99+Xy1vNId +B8PJPCenfEtgj2QBvOD6kA8hoppv4HibAzVyc8LlK8eM5L6A47pSRuBq7EiZRcLc +p1bK9xhVfFP3PcqEPlpO0IGR +-----END PRIVATE KEY----- diff --git a/local.topcoder-dev.com.pem b/local.topcoder-dev.com.pem new file mode 100644 index 00000000..25584d72 --- /dev/null +++ b/local.topcoder-dev.com.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEbzCCAtegAwIBAgIRANBdmrQ+KH/NSLEuY4nIXlswDQYJKoZIhvcNAQELBQAw +gZcxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE2MDQGA1UECwwtam1n +YXNwZXJAam1nYXNwZXItd29ya3N0YXRpb24gKEp1c3RpbiBHYXNwZXIpMT0wOwYD +VQQDDDRta2NlcnQgam1nYXNwZXJAam1nYXNwZXItd29ya3N0YXRpb24gKEp1c3Rp +biBHYXNwZXIpMB4XDTI1MDYyMDAxNTEyM1oXDTI3MDkyMDAxNTEyM1owYTEnMCUG +A1UEChMebWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTYwNAYDVQQLDC1q +bWdhc3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGluIEdhc3BlcikwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSaA4EMTt5DgocVnvkZx1g0LoR +fFDjM+iKbL/rly9c71gnqIwdGZNo3t14XdAE+soGZwsiclmBIHXb6AfY9mOjSeCs +WyqKuCGNp7kvP6/rQ/OAeWiVqa7y339Fl2JTEGnHd0aMps9hdSMRUINpkBkMKTTe +VVoF1d2Ybv5G8bwMOg0xyOConwla2yZoCZWUffHH2er93t8n0r0IL3kYOyRNQUeE +H01+bjwilVAEIih6lT78mKMp3Bj49RC1+IDr0OnLEp4onBwIhXGXUCpxGvacxRXF +GIx/1JvReHnKMCJw+YVthYv4PfPbsqf04zYjdRv1WH8SPy0QbN7UJ6Xs2K1HAgMB +AAGjazBpMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNV +HSMEGDAWgBRxIB1YaQdvuHWwlakpJZq5033a2TAhBgNVHREEGjAYghZsb2NhbC50 +b3Bjb2Rlci1kZXYuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQCSmrglluhmi34XlHQv +RlNNUz0upkklYJdjIOKAuuodlqgm3rL7XaDj1g9U9iAkPQGpXHMDfn8cS7SEjyyL +wsD+aK+qZbTwtcAcqeHGj2gYze90TY5ZzSHUYoaq4MAaDSZp3bOTc9g9l5cdT8tM +OEeeJkDMBDCMm+a7DmuIJW+1JW83vBqKqSfOmWqRvFVcEmQYVMiEmuEor5mXTjrt +nrWm/bDq0h1ezRU3ZPNbKniynlUYExOGPAuE6zBNOmJmKQXo7SEd8s5XAKGa+vvh +ieTPCvWQmcxmTQm4D5yozjPT0nnzCzar8cqo7FTLHjDSQPEIgB6AwturhqAF6CSa +D3QA5S/wvJES5cWdnWf2+adWXDXg+kM0cWWwhVoW70SDKHF//pevMuXFIE2Ejm+g +vym1GSxOMgkdKYkRya1hvO2AovcOWY9bgtf3yphBIbnAnk2YXXtFxEiAsqu6bObi +v9pXKgWJRCB3AifgJBH9EnJljgvndEj+To0eq07PYQVcsos= +-----END CERTIFICATE----- diff --git a/localhost-key.pem b/localhost-key.pem new file mode 100644 index 00000000..c7405814 --- /dev/null +++ b/localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGvwkNFXuhP0A6 +Nt3SZ3D6FQrmxxKYK7mFbHzmqCRNnBj054NUBswEc82y+3oCorgzw9jCqCt5bQSR +GuvBEJPS9/rc3R3Mdr+ImDzo4FJiE6yPFx9rnbQPHIpMRWY21fvWqPcnkJM/FKoN +xoLxS2tQyF9dlSPpixhmoZQoDSC30Ijd7tGOTOAuoBUc80hl02NpRT/eBIcbN9A9 +8C3DAkJUCNrxwB3lhvz2LqiYBalDJo2PUsTjAMEaLfkj9SGmR9M9Ua7YcSIhimyu +mY/Q3GLCxHnPE3stVyjbwiZQIKYxI5nZgiyErJkVfVubx1vnguJcBvs/rfyH3DZ8 +3oklx7inAgMBAAECggEAdbHHkGH6doDYbiDzt5feRZqUfBnDny21jZezV3yXEwav +mMhI80ebJb/WPnnBxTHLV4xRHuUr6Zpvq+Z/WjOQ9sw3WPfwn5Zq0l8lIttEriPs +ekg9KSOY76H9HDG02CBcJMCmrF1ndWGtWr8F6BK7mHkwUGDzhWgDqTNiY11y1Ka0 +XlpR0IPr1tHg2iUoIOxLMIjUcAtbnn5OmClaIegHZyYBnxztubgiDNLPDdhEbmCk +6R7POweD+SUoOOutcHwJqvZe0dSOJaDVVScPe7GPGl8cVpXaeGJYUGZF16QRd5xH +Tbvj5pREgqYe3DowL0jzJ6c87J0BXpO/KzSaSXynYQKBgQDgrdHD/ozxO7f3VK79 +HcctuVKWiv5ksbxksYQU7dVacr1uN6u2yfSLhVKoLpLwcBhCL0LHBJ6cpwwO4jym +ab0Fr06qxhWSqOlwI3EXFR54oDOmRxItkEegW1nIxTyP2j9hPJ7VSqbMs4oE0N12 +yieaQgTvPyuwIMWz1+OQ4t4diQKBgQDic78smRC8JyaZGvvJUmNHgT8UOvm1lpnS +U/jVGCBMX2EHZrnbdgimNFb+8XeP0WZRv67yDJ46PUX5ahO7O2yeGETIJnDTrNM0 +M+aEqubA1HA/1+/h1FTvKRiTYbEDCnt65EqCIB/s7CM3v5nM/TZTnVmFut3J04kx +tyydzMtIrwKBgET2lXBnbbON9QXBxISE42IxhBwZRcR6maz+n+AcsGQ229Y82EQe +8STyI1DkGs4aWhfWkdSsolLLI3ReFOevhQl9qdPZQT3nAuAcwNWo8dVstu3O2tGJ +e7LI12I8yD4Pa2zZQpeNdm1WnoKj6ZZQrp82rHUTGsHRDV4KYhtSx4KhAoGBAJrf +GE8S++wCRpaNasfcDcP4c8CNOPxk3ByJi3OJhYVV8dETA2dBSVcKErlXQTLdvkGI +e8hUst4Xy8RxNL9nO7i/1kKgb6eE2gkoua3gB+K3J3GyZ/+lrNTH4WPieyIeSCba +/M4T1GG/ebKF2lTklAQJaBFapJaEkp6qrNvbFOhHAoGAMhssYAAweMeUpLSIQgN3 +Ndr/dTYLK3XrynJN+5cRW29mwy1DhJgN5VSl3d4m/g02H5KppOMQ0qdiuJc2w/ua +9RbUERNkZRLT4XtJPZd2kdNeiMtWaqyY6rNyrdc/yIJzl7vwZ2rxTekw0bWKnqjK +4qjSsqK57kqy+gtIrG4hH6s= +-----END PRIVATE KEY----- diff --git a/localhost.pem b/localhost.pem new file mode 100644 index 00000000..08e6b35e --- /dev/null +++ b/localhost.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEYTCCAsmgAwIBAgIQCIX2MHOIoWm0a+ATrRb6oDANBgkqhkiG9w0BAQsFADCB +lzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTYwNAYDVQQLDC1qbWdh +c3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGluIEdhc3BlcikxPTA7BgNV +BAMMNG1rY2VydCBqbWdhc3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGlu +IEdhc3BlcikwHhcNMjUwNjIwMDE1MDU1WhcNMjcwOTIwMDE1MDU1WjBhMScwJQYD +VQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxNjA0BgNVBAsMLWpt +Z2FzcGVyQGptZ2FzcGVyLXdvcmtzdGF0aW9uIChKdXN0aW4gR2FzcGVyKTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMa/CQ0Ve6E/QDo23dJncPoVCubH +EpgruYVsfOaoJE2cGPTng1QGzARzzbL7egKiuDPD2MKoK3ltBJEa68EQk9L3+tzd +Hcx2v4iYPOjgUmITrI8XH2udtA8cikxFZjbV+9ao9yeQkz8Uqg3GgvFLa1DIX12V +I+mLGGahlCgNILfQiN3u0Y5M4C6gFRzzSGXTY2lFP94Ehxs30D3wLcMCQlQI2vHA +HeWG/PYuqJgFqUMmjY9SxOMAwRot+SP1IaZH0z1RrthxIiGKbK6Zj9DcYsLEec8T +ey1XKNvCJlAgpjEjmdmCLISsmRV9W5vHW+eC4lwG+z+t/IfcNnzeiSXHuKcCAwEA +AaNeMFwwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1Ud +IwQYMBaAFHEgHVhpB2+4dbCVqSklmrnTfdrZMBQGA1UdEQQNMAuCCWxvY2FsaG9z +dDANBgkqhkiG9w0BAQsFAAOCAYEAp6SCoXbaCDD+c00td5jN31HuRnxUe6Yfz7s7 +OWh9FlN9KAQi+KnaDe7mBBmz8mbO84Q7eLG12IHYq0/kWHObLdBuRoBZAi13vNOD +J+9NBiQdiwkkA9FYTjMxJpMz41qYspxt1NKlCDZ3GA1l5eQcT45YEXLQd8xzUpKk +GJrIlkPn2mvZaYA/01Nd7QgYTilrlshHkmG80F1Cof7Js5I56s82/RFwY5syxvwW +1g4rgakG2o5VsUm3arAB9aWLuA/fbwbewGcQ46SLKAD9mDRgL8sZYwacdZmeAGhz +m1enUx0xn7U6DoOo7/Vltqm7j5mHKwv0ExnZkeyYr39b7Kl4R6HLiYP0TAHd44Q5 +CZwuLphRmq/ZShXQ6vbg2pif5IjYLNd+eTZm3JgZk1rn7vZPApiiB21jf0it3Bwa +XnlqlNw8rcKliQeCXO6OxdE9EttM9QzbbKNQM/ounr+g3h+/hHtARUPwo0OUhbzc +ye8dz2blamHZgpr9BIeVkdRoBVj0 +-----END CERTIFICATE----- diff --git a/package-lock.json b/package-lock.json index 0b958c46..a5aedfe4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3161,25 +3161,6 @@ } } }, - "@toast-ui/editor": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-2.5.4.tgz", - "integrity": "sha512-XsuYlPQxhec9dHQREFAigjE4enHSuGMF7D0YQ6wW7phmusvAu0FnJfZUPjJBoU/GKz7WP5U6fKU9/P+8j65D8A==", - "requires": { - "@types/codemirror": "0.0.71", - "codemirror": "^5.48.4" - }, - "dependencies": { - "@types/codemirror": { - "version": "0.0.71", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.71.tgz", - "integrity": "sha512-b2oEEnno1LIGKMR7uBEsr40al1UijF1HEpRn0+Yf1xOLl24iQgB7DBpZVMM7y54G5wCNoclDrRO65E6KHPNO2w==", - "requires": { - "@types/tern": "*" - } - } - } - }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -3299,25 +3280,6 @@ "@types/unist": "*" } }, - "@types/hoist-non-react-statics": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", - "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - } - } - }, "@types/katex": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz", @@ -3381,21 +3343,6 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, - "@types/react": { - "version": "19.1.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", - "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", - "requires": { - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - } - } - }, "@types/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", @@ -5938,11 +5885,6 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, - "codemirror": { - "version": "5.65.19", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.19.tgz", - "integrity": "sha512-+aFkvqhaAVr1gferNMuN8vkTSrWIFvzlMV9I2KBLCWS2WpZ2+UAkZjlMZmEuT+gcXTi6RrGQCkWq1/bDtGqhIA==" - }, "codemirror-spell-checker": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", @@ -6950,11 +6892,6 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -8978,41 +8915,6 @@ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" }, - "formik": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", - "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", - "requires": { - "@types/hoist-non-react-statics": "^3.3.1", - "deepmerge": "^2.1.1", - "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "react-fast-compare": "^2.0.1", - "tiny-warning": "^1.0.2", - "tslib": "^2.0.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - } - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -17788,11 +17690,6 @@ "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" }, - "property-expr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", - "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" - }, "property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -21909,11 +21806,6 @@ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, - "tiny-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" - }, "tiny-invariant": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", @@ -22164,11 +22056,6 @@ "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - }, "tough-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", @@ -22289,11 +22176,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" }, - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -24663,17 +24545,6 @@ "type-fest": "^2.19.0" } }, - "yup": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.6.1.tgz", - "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", - "requires": { - "property-expr": "^2.0.5", - "tiny-case": "^1.0.3", - "toposort": "^2.0.2", - "type-fest": "^2.19.0" - } - }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/package.json b/package.json index 7c99813e..8eab630d 100644 --- a/package.json +++ b/package.json @@ -129,8 +129,7 @@ "build": "node scripts/build.js", "lint": "eslint ./src", "lint:fix": "eslint --fix ./src", - "test": "node scripts/test.js", - "restart": "node scripts/build.js && node server.js" + "test": "node scripts/test.js" }, "eslintConfig": { "extends": [ diff --git a/server.js b/server.js index b9d2ccae..d81a88a5 100644 --- a/server.js +++ b/server.js @@ -17,10 +17,10 @@ function check () { } app.use(healthCheck.middleware([check])) app.use((req, res, next) => { - //res.header('Referrer-Policy', 'strict-origin-when-cross-origin') + res.header('Referrer-Policy', 'strict-origin-when-cross-origin') res.header('Permissions-Policy', 'geolocation=(), microphone=(), camera=()') res.header('X-Content-Type-Options', 'nosniff') - // res.header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload') + res.header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload') res.header('Cache-control', 'public, max-age=0') res.header('Pragma', 'no-cache') res.setHeader('X-Frame-Options', 'DENY') diff --git a/src/components/ChallengeEditor/ChallengeViewTabs/index.js b/src/components/ChallengeEditor/ChallengeViewTabs/index.js index 6a7c9ad3..9c7d301f 100644 --- a/src/components/ChallengeEditor/ChallengeViewTabs/index.js +++ b/src/components/ChallengeEditor/ChallengeViewTabs/index.js @@ -210,7 +210,7 @@ const ChallengeViewTabs = ({ (
)} {canLaunch && (
- {challenge ? ( + {challenge.legacyId || isTask ? ( { let errMessage = 'Please set a copilot' const handleProperty = copilots.handle ? 'handle' : 'memberHandle' const selectedCopilot = _.find(copilots, { [handleProperty]: challenge.copilot }) const selectedCopilotHandle = selectedCopilot ? selectedCopilot[handleProperty] : undefined - const copilotFee = _.find(challenge.prizeSets, p => p.type === PRIZE_SETS_TYPE.COPILOT_PAYMENT, []) + const copilotFee = _.find(challenge.prizeSets, p => p.type === 'copilot', []) const selfService = challenge.selfService const copilotIsSelf = loggedInUser && selectedCopilotHandle === loggedInUser.handle const assignButtonText = `${selectedCopilot && copilotIsSelf ? 'Una' : 'A'}ssign Yourself` diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index ef0806b0..6f59b8c0 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -956,7 +956,7 @@ class ChallengeEditor extends Component { return { ...p, prizes } }) challenge.status = status - if (status === CHALLENGE_STATUS.ACTIVE && isTask) { + if (status === 'Active' && isTask) { challenge.startDate = moment().format() } @@ -1024,7 +1024,7 @@ class ChallengeEditor extends Component { } const newChallenge = { - status: CHALLENGE_STATUS.NEW, + status: 'New', projectId: this.props.projectId, name, typeId, @@ -1095,7 +1095,7 @@ class ChallengeEditor extends Component { return ([ { name: `${challenge.name} Discussion`, - type: 'CHALLENGE', + type: 'challenge', provider: 'vanilla' } ]) @@ -1290,11 +1290,11 @@ class ChallengeEditor extends Component { } async onActiveChallenge () { - this.updateAllChallengeInfo(CHALLENGE_STATUS.ACTIVE) + this.updateAllChallengeInfo('Active') } async saveDraft () { - this.updateAllChallengeInfo(CHALLENGE_STATUS.DRAFT) + this.updateAllChallengeInfo('Draft') } async onlySave () { @@ -1487,7 +1487,7 @@ class ChallengeEditor extends Component { Closing Task Confirmation Modal and Error Modal */ if (isCloseTask && !isConfirm) { - const taskPrize = _.get(_.find(challenge.prizeSets, { type: PRIZE_SETS_TYPE.CHALLENGE_PRIZES }), 'prizes[0].value') + const taskPrize = _.get(_.find(challenge.prizeSets, { type: 'placement' }), 'prizes[0].value') const assignedMemberId = _.get(assignedMemberDetails, 'userId') const assignedMember = _.get(assignedMemberDetails, 'handle', `User Id: ${assignedMemberId}`) @@ -1535,7 +1535,7 @@ class ChallengeEditor extends Component { - {!this.state.hasValidationErrors ? ( + {(challenge.legacyId || isTask) && !this.state.hasValidationErrors ? ( ) : ( diff --git a/src/components/ChallengesComponent/ChallengeCard/index.js b/src/components/ChallengesComponent/ChallengeCard/index.js index 9947f48a..4347bc98 100644 --- a/src/components/ChallengesComponent/ChallengeCard/index.js +++ b/src/components/ChallengesComponent/ChallengeCard/index.js @@ -197,7 +197,7 @@ class ChallengeCard extends React.Component { this.setState({ isSaving: true }) const isTask = _.get(challenge, 'task.isTask', false) const payload = { - status: CHALLENGE_STATUS.ACTIVE + status: 'Active' } if (isTask) { payload.startDate = moment().format() diff --git a/src/config/constants.js b/src/config/constants.js index 0ce445a9..47e4d2ed 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -227,10 +227,10 @@ export const PHASE_STATUS = { // List of prize sets types export const PRIZE_SETS_TYPE = { - CHALLENGE_PRIZES: 'PLACEMENT', - COPILOT_PAYMENT: 'COPILOT', - REVIEWER_PAYMENT: 'REVIEWER', - CHECKPOINT_PRIZES: 'CHECKPOINT' + CHALLENGE_PRIZES: 'placement', + COPILOT_PAYMENT: 'copilot', + REVIEWER_PAYMENT: 'reviewer', + CHECKPOINT_PRIZES: 'checkpoint' } export const REVIEW_TYPES = { diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 956fcfff..dffcc934 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -38,7 +38,7 @@ import { loadSubmissions } from '../../actions/challengeSubmissions' import { loadProject } from '../../actions/projects' import { connect } from 'react-redux' -import { SUBMITTER_ROLE_UUID, MESSAGE, PROJECT_ROLES, CHALLENGE_STATUS } from '../../config/constants' +import { SUBMITTER_ROLE_UUID, MESSAGE, PROJECT_ROLES } from '../../config/constants' import { patchChallenge } from '../../services/challenges' import ConfirmationModal from '../../components/Modal/ConfirmationModal' import AlertModal from '../../components/Modal/AlertModal' @@ -275,7 +275,7 @@ class ChallengeEditor extends Component { try { this.setState({ isLaunching: true }) const payload = { - status: CHALLENGE_STATUS.ACTIVE + status: 'Active' } if (isTask) { payload.startDate = moment().format() From b70bdccd7340146858719c9b90a473b27fd4eb00 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 09:53:44 +1000 Subject: [PATCH 14/20] Add .pem to gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c4b8ad9b..9bafbdb2 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,7 @@ yarn-debug.log* yarn-error.log* *.env - +*.pem *.vscode # e2e test case From b7707a58abbf0dd45476d59c1375ee2cc3e2d62f Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Tue, 12 Aug 2025 09:54:16 +1000 Subject: [PATCH 15/20] Remove pem files --- local.topcoder-dev.com-key.pem | 28 ---------------------------- local.topcoder-dev.com.pem | 26 -------------------------- localhost-key.pem | 28 ---------------------------- localhost.pem | 26 -------------------------- 4 files changed, 108 deletions(-) delete mode 100644 local.topcoder-dev.com-key.pem delete mode 100644 local.topcoder-dev.com.pem delete mode 100644 localhost-key.pem delete mode 100644 localhost.pem diff --git a/local.topcoder-dev.com-key.pem b/local.topcoder-dev.com-key.pem deleted file mode 100644 index c09c3687..00000000 --- a/local.topcoder-dev.com-key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDSaA4EMTt5Dgoc -VnvkZx1g0LoRfFDjM+iKbL/rly9c71gnqIwdGZNo3t14XdAE+soGZwsiclmBIHXb -6AfY9mOjSeCsWyqKuCGNp7kvP6/rQ/OAeWiVqa7y339Fl2JTEGnHd0aMps9hdSMR -UINpkBkMKTTeVVoF1d2Ybv5G8bwMOg0xyOConwla2yZoCZWUffHH2er93t8n0r0I -L3kYOyRNQUeEH01+bjwilVAEIih6lT78mKMp3Bj49RC1+IDr0OnLEp4onBwIhXGX -UCpxGvacxRXFGIx/1JvReHnKMCJw+YVthYv4PfPbsqf04zYjdRv1WH8SPy0QbN7U -J6Xs2K1HAgMBAAECggEAWWSkL9vK7M+uNAP6dzvoG24S38L1itJPBiDWGX4OPWnj -BlZx0RtAqdmmNrGE49i5ZKb68BOtO1NTP68BRojIJGQK9K93D6DTgJ+16gEg+M/R -8M+kQ5HoJoAWTrbWq3vZtUlTzAZDLaDa2UxfyMXUHnqTX7LboIcQsubVWcbyoi5y -myReflYeootcbw1uuSrIAIUubDnJHhTTl+A/Sh65orNgJhhCkwNAxnYlm1bjPHUr -NKkqjD9kRfS3/VOYOSmdB3sfQ7onTILhmqtvvtAQbdVuOPDjEtSdlU+QlR0rCB2U -VrxsWk20EANVM8uam4x54cZfsAmV9wOMXhlCK80LQQKBgQDlX43y/P/5PbmRPm+u -9iStmQJPfLEdY6rstov+LXaw0tXkBlLIsr/CCvidyhqQjo7MbCNDRU39SlaMyuK8 -QyQfgkpuFojfffKFXFg9aX8d1+AjT9x6rbYF6Mya7QjQT86W4Wb01RUMvgBS/yzu -WnwU/nUWqjHP8OfWo6H/B+Ts3wKBgQDq1NnJfpCQa5fwMtCbkilyRSeRoreCN8yX -0vIULdQxj9nNPyDXN9LsmRMdhr2TZ42ahflMbNSRGLW0CiozmylCBJjnqyl1VhL1 -X5aOh9l9qB4+fVVoir1O8xr0VcOLmWJGqRece0sxf6ye0I9+/n2hJZeGW2OyN9Cc -70QTx4BkmQKBgQCnlRrW73XtmeVccuuSPxApLWN8w7N7r3gQHodFm93d7wyK3vvY -2pAzq2RdlG24NA+s100kNxx19LwrfYgO2FcqFj1fFWPHNfPc780ggVV4bmK6Kf0C -PKyCwMXMY2ZPHB/qKKDaPFx2xNLj0L/5HW8Ov6K4fnyKWo5oSYFwHUpqrQKBgQCy -i/WvGxkFhZj3W1t6/Y2fwW7Nb1+BlbVsNkozB4lPyaT7RiVNHbe0hsqe54SaX+Ct -fXHIJvMUAyqcYiImLLIY7O/pLR2PhktR30TUx/uYa8vbDWZz3xECxxpWbiMIsC2l -tgkqxB+u2flAoyiHkS2p6bAkyrWpmoB14gHr3AMF+QKBgA+1sH680K56YB9P0FBI -EDZW51oJmA4r8w8IZvsAtkZHVof9/3RYWfO/E5ePfSl+yRpeNB4bo/99+Xy1vNId -B8PJPCenfEtgj2QBvOD6kA8hoppv4HibAzVyc8LlK8eM5L6A47pSRuBq7EiZRcLc -p1bK9xhVfFP3PcqEPlpO0IGR ------END PRIVATE KEY----- diff --git a/local.topcoder-dev.com.pem b/local.topcoder-dev.com.pem deleted file mode 100644 index 25584d72..00000000 --- a/local.topcoder-dev.com.pem +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEbzCCAtegAwIBAgIRANBdmrQ+KH/NSLEuY4nIXlswDQYJKoZIhvcNAQELBQAw -gZcxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE2MDQGA1UECwwtam1n -YXNwZXJAam1nYXNwZXItd29ya3N0YXRpb24gKEp1c3RpbiBHYXNwZXIpMT0wOwYD -VQQDDDRta2NlcnQgam1nYXNwZXJAam1nYXNwZXItd29ya3N0YXRpb24gKEp1c3Rp -biBHYXNwZXIpMB4XDTI1MDYyMDAxNTEyM1oXDTI3MDkyMDAxNTEyM1owYTEnMCUG -A1UEChMebWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTYwNAYDVQQLDC1q -bWdhc3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGluIEdhc3BlcikwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSaA4EMTt5DgocVnvkZx1g0LoR -fFDjM+iKbL/rly9c71gnqIwdGZNo3t14XdAE+soGZwsiclmBIHXb6AfY9mOjSeCs -WyqKuCGNp7kvP6/rQ/OAeWiVqa7y339Fl2JTEGnHd0aMps9hdSMRUINpkBkMKTTe -VVoF1d2Ybv5G8bwMOg0xyOConwla2yZoCZWUffHH2er93t8n0r0IL3kYOyRNQUeE -H01+bjwilVAEIih6lT78mKMp3Bj49RC1+IDr0OnLEp4onBwIhXGXUCpxGvacxRXF -GIx/1JvReHnKMCJw+YVthYv4PfPbsqf04zYjdRv1WH8SPy0QbN7UJ6Xs2K1HAgMB -AAGjazBpMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNV -HSMEGDAWgBRxIB1YaQdvuHWwlakpJZq5033a2TAhBgNVHREEGjAYghZsb2NhbC50 -b3Bjb2Rlci1kZXYuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQCSmrglluhmi34XlHQv -RlNNUz0upkklYJdjIOKAuuodlqgm3rL7XaDj1g9U9iAkPQGpXHMDfn8cS7SEjyyL -wsD+aK+qZbTwtcAcqeHGj2gYze90TY5ZzSHUYoaq4MAaDSZp3bOTc9g9l5cdT8tM -OEeeJkDMBDCMm+a7DmuIJW+1JW83vBqKqSfOmWqRvFVcEmQYVMiEmuEor5mXTjrt -nrWm/bDq0h1ezRU3ZPNbKniynlUYExOGPAuE6zBNOmJmKQXo7SEd8s5XAKGa+vvh -ieTPCvWQmcxmTQm4D5yozjPT0nnzCzar8cqo7FTLHjDSQPEIgB6AwturhqAF6CSa -D3QA5S/wvJES5cWdnWf2+adWXDXg+kM0cWWwhVoW70SDKHF//pevMuXFIE2Ejm+g -vym1GSxOMgkdKYkRya1hvO2AovcOWY9bgtf3yphBIbnAnk2YXXtFxEiAsqu6bObi -v9pXKgWJRCB3AifgJBH9EnJljgvndEj+To0eq07PYQVcsos= ------END CERTIFICATE----- diff --git a/localhost-key.pem b/localhost-key.pem deleted file mode 100644 index c7405814..00000000 --- a/localhost-key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGvwkNFXuhP0A6 -Nt3SZ3D6FQrmxxKYK7mFbHzmqCRNnBj054NUBswEc82y+3oCorgzw9jCqCt5bQSR -GuvBEJPS9/rc3R3Mdr+ImDzo4FJiE6yPFx9rnbQPHIpMRWY21fvWqPcnkJM/FKoN -xoLxS2tQyF9dlSPpixhmoZQoDSC30Ijd7tGOTOAuoBUc80hl02NpRT/eBIcbN9A9 -8C3DAkJUCNrxwB3lhvz2LqiYBalDJo2PUsTjAMEaLfkj9SGmR9M9Ua7YcSIhimyu -mY/Q3GLCxHnPE3stVyjbwiZQIKYxI5nZgiyErJkVfVubx1vnguJcBvs/rfyH3DZ8 -3oklx7inAgMBAAECggEAdbHHkGH6doDYbiDzt5feRZqUfBnDny21jZezV3yXEwav -mMhI80ebJb/WPnnBxTHLV4xRHuUr6Zpvq+Z/WjOQ9sw3WPfwn5Zq0l8lIttEriPs -ekg9KSOY76H9HDG02CBcJMCmrF1ndWGtWr8F6BK7mHkwUGDzhWgDqTNiY11y1Ka0 -XlpR0IPr1tHg2iUoIOxLMIjUcAtbnn5OmClaIegHZyYBnxztubgiDNLPDdhEbmCk -6R7POweD+SUoOOutcHwJqvZe0dSOJaDVVScPe7GPGl8cVpXaeGJYUGZF16QRd5xH -Tbvj5pREgqYe3DowL0jzJ6c87J0BXpO/KzSaSXynYQKBgQDgrdHD/ozxO7f3VK79 -HcctuVKWiv5ksbxksYQU7dVacr1uN6u2yfSLhVKoLpLwcBhCL0LHBJ6cpwwO4jym -ab0Fr06qxhWSqOlwI3EXFR54oDOmRxItkEegW1nIxTyP2j9hPJ7VSqbMs4oE0N12 -yieaQgTvPyuwIMWz1+OQ4t4diQKBgQDic78smRC8JyaZGvvJUmNHgT8UOvm1lpnS -U/jVGCBMX2EHZrnbdgimNFb+8XeP0WZRv67yDJ46PUX5ahO7O2yeGETIJnDTrNM0 -M+aEqubA1HA/1+/h1FTvKRiTYbEDCnt65EqCIB/s7CM3v5nM/TZTnVmFut3J04kx -tyydzMtIrwKBgET2lXBnbbON9QXBxISE42IxhBwZRcR6maz+n+AcsGQ229Y82EQe -8STyI1DkGs4aWhfWkdSsolLLI3ReFOevhQl9qdPZQT3nAuAcwNWo8dVstu3O2tGJ -e7LI12I8yD4Pa2zZQpeNdm1WnoKj6ZZQrp82rHUTGsHRDV4KYhtSx4KhAoGBAJrf -GE8S++wCRpaNasfcDcP4c8CNOPxk3ByJi3OJhYVV8dETA2dBSVcKErlXQTLdvkGI -e8hUst4Xy8RxNL9nO7i/1kKgb6eE2gkoua3gB+K3J3GyZ/+lrNTH4WPieyIeSCba -/M4T1GG/ebKF2lTklAQJaBFapJaEkp6qrNvbFOhHAoGAMhssYAAweMeUpLSIQgN3 -Ndr/dTYLK3XrynJN+5cRW29mwy1DhJgN5VSl3d4m/g02H5KppOMQ0qdiuJc2w/ua -9RbUERNkZRLT4XtJPZd2kdNeiMtWaqyY6rNyrdc/yIJzl7vwZ2rxTekw0bWKnqjK -4qjSsqK57kqy+gtIrG4hH6s= ------END PRIVATE KEY----- diff --git a/localhost.pem b/localhost.pem deleted file mode 100644 index 08e6b35e..00000000 --- a/localhost.pem +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEYTCCAsmgAwIBAgIQCIX2MHOIoWm0a+ATrRb6oDANBgkqhkiG9w0BAQsFADCB -lzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMTYwNAYDVQQLDC1qbWdh -c3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGluIEdhc3BlcikxPTA7BgNV -BAMMNG1rY2VydCBqbWdhc3BlckBqbWdhc3Blci13b3Jrc3RhdGlvbiAoSnVzdGlu -IEdhc3BlcikwHhcNMjUwNjIwMDE1MDU1WhcNMjcwOTIwMDE1MDU1WjBhMScwJQYD -VQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxNjA0BgNVBAsMLWpt -Z2FzcGVyQGptZ2FzcGVyLXdvcmtzdGF0aW9uIChKdXN0aW4gR2FzcGVyKTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMa/CQ0Ve6E/QDo23dJncPoVCubH -EpgruYVsfOaoJE2cGPTng1QGzARzzbL7egKiuDPD2MKoK3ltBJEa68EQk9L3+tzd -Hcx2v4iYPOjgUmITrI8XH2udtA8cikxFZjbV+9ao9yeQkz8Uqg3GgvFLa1DIX12V -I+mLGGahlCgNILfQiN3u0Y5M4C6gFRzzSGXTY2lFP94Ehxs30D3wLcMCQlQI2vHA -HeWG/PYuqJgFqUMmjY9SxOMAwRot+SP1IaZH0z1RrthxIiGKbK6Zj9DcYsLEec8T -ey1XKNvCJlAgpjEjmdmCLISsmRV9W5vHW+eC4lwG+z+t/IfcNnzeiSXHuKcCAwEA -AaNeMFwwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1Ud -IwQYMBaAFHEgHVhpB2+4dbCVqSklmrnTfdrZMBQGA1UdEQQNMAuCCWxvY2FsaG9z -dDANBgkqhkiG9w0BAQsFAAOCAYEAp6SCoXbaCDD+c00td5jN31HuRnxUe6Yfz7s7 -OWh9FlN9KAQi+KnaDe7mBBmz8mbO84Q7eLG12IHYq0/kWHObLdBuRoBZAi13vNOD -J+9NBiQdiwkkA9FYTjMxJpMz41qYspxt1NKlCDZ3GA1l5eQcT45YEXLQd8xzUpKk -GJrIlkPn2mvZaYA/01Nd7QgYTilrlshHkmG80F1Cof7Js5I56s82/RFwY5syxvwW -1g4rgakG2o5VsUm3arAB9aWLuA/fbwbewGcQ46SLKAD9mDRgL8sZYwacdZmeAGhz -m1enUx0xn7U6DoOo7/Vltqm7j5mHKwv0ExnZkeyYr39b7Kl4R6HLiYP0TAHd44Q5 -CZwuLphRmq/ZShXQ6vbg2pif5IjYLNd+eTZm3JgZk1rn7vZPApiiB21jf0it3Bwa -XnlqlNw8rcKliQeCXO6OxdE9EttM9QzbbKNQM/ounr+g3h+/hHtARUPwo0OUhbzc -ye8dz2blamHZgpr9BIeVkdRoBVj0 ------END CERTIFICATE----- From 9cd8413483a5ffdbab3c5e758f4e68d241a55068 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 12 Aug 2025 15:37:34 +0300 Subject: [PATCH 16/20] Members api fix --- src/config/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/constants.js b/src/config/constants.js index 47e4d2ed..98b19109 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -59,7 +59,7 @@ export const FILE_PICKER_PROGRESS_INTERVAL = 100 export const FILE_PICKER_UPLOAD_RETRY = 2 export const FILE_PICKER_UPLOAD_TIMEOUT = 30 * 60 * 1000 // 30 minutes export const SPECIFICATION_ATTACHMENTS_FOLDER = 'SPECIFICATION_ATTACHMENTS' -export const MEMBERS_API_URL = process.env.MEMBERS_API_URL +export const MEMBERS_API_URL = process.env.MEMBER_API_URL export const getAWSContainerFileURL = (key) => `https://${FILE_PICKER_CONTAINER_NAME}.s3.amazonaws.com/${key}` From 0110fb3dd8fdefadc2a5e03c5fc164c60fa64c63 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 13 Aug 2025 07:40:29 +0300 Subject: [PATCH 17/20] PM-1609 - update button colors --- src/components/ChallengesComponent/index.js | 2 +- src/components/Users/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index a110244a..e4357dae 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -94,7 +94,7 @@ const ChallengesComponent = ({ {(checkAdmin(auth.token) || checkManager(auth.token)) && ( )}
From 94cdb18323a2d892b456a36baed7000068f45d71 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 13 Aug 2025 07:44:49 +0300 Subject: [PATCH 18/20] show users button for all users --- src/components/ChallengesComponent/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index e4357dae..9182189a 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -91,7 +91,7 @@ const ChallengesComponent = ({
{activeProject && activeProject.id && !isReadOnly ? (
- {(checkAdmin(auth.token) || checkManager(auth.token)) && ( + {isAdminOrCopilot && ( Date: Wed, 13 Aug 2025 08:05:08 +0300 Subject: [PATCH 19/20] Fix button width & color --- src/components/Users/Users.module.scss | 2 +- src/components/Users/index.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/Users/Users.module.scss b/src/components/Users/Users.module.scss index a37c2395..0d915f33 100644 --- a/src/components/Users/Users.module.scss +++ b/src/components/Users/Users.module.scss @@ -413,7 +413,7 @@ margin-bottom: 20px; gap: 8px; > * { - width: 125px; + width: max-content; } } diff --git a/src/components/Users/index.js b/src/components/Users/index.js index bb7c0bfe..2164338b 100644 --- a/src/components/Users/index.js +++ b/src/components/Users/index.js @@ -14,7 +14,6 @@ import ConfirmationModal from '../Modal/ConfirmationModal' import UserAddModalContent from './user-add.modal' import InviteUserModalContent from './invite-user.modal' // Import the new component import Loader from '../Loader' -import { OutlineButton } from '../Buttons' const theme = { container: styles.modalContainer @@ -230,7 +229,7 @@ class Users extends Component { ) } {projectOption && ( - From 184e715b2d54e946460894e2766afd7dcb05cc26 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 13 Aug 2025 09:10:35 +0300 Subject: [PATCH 20/20] make users button available to everyone --- src/components/ChallengesComponent/index.js | 22 ++++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index 9182189a..af5a36ea 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -91,18 +91,16 @@ const ChallengesComponent = ({
{activeProject && activeProject.id && !isReadOnly ? (
- {isAdminOrCopilot && ( - - )} + {isAdminOrCopilot && (