diff --git a/api/src/affiliation/loaders/__tests__/load-affiliation-connections-by-org-id.test.js b/api/src/affiliation/loaders/__tests__/load-affiliation-connections-by-org-id.test.js index 3fa581cac5..cc018b66d8 100644 --- a/api/src/affiliation/loaders/__tests__/load-affiliation-connections-by-org-id.test.js +++ b/api/src/affiliation/loaders/__tests__/load-affiliation-connections-by-org-id.test.js @@ -530,7 +530,7 @@ describe('given the load affiliations by org id function', () => { permission: 'user', }) }) - describe('ordering by USER_USERNAME', () => { + describe('ordering by USERNAME', () => { describe('direction is set to ASC', () => { it('returns affiliation', async () => { const expectedAffiliation = await loadAffiliationByKey({ @@ -552,7 +552,7 @@ describe('given the load affiliations by org id function', () => { after: toGlobalId('affiliation', affOne._key), before: toGlobalId('affiliation', affThree._key), orderBy: { - field: 'user-username', + field: 'username', direction: 'ASC', }, } @@ -601,7 +601,7 @@ describe('given the load affiliations by org id function', () => { after: toGlobalId('affiliation', affThree._key), before: toGlobalId('affiliation', affOne._key), orderBy: { - field: 'user-username', + field: 'username', direction: 'DESC', }, } diff --git a/api/src/affiliation/loaders/load-affiliation-connections-by-org-id.js b/api/src/affiliation/loaders/load-affiliation-connections-by-org-id.js index fa32893b24..1c8614e8a5 100644 --- a/api/src/affiliation/loaders/load-affiliation-connections-by-org-id.js +++ b/api/src/affiliation/loaders/load-affiliation-connections-by-org-id.js @@ -20,9 +20,15 @@ export const loadAffiliationConnectionsByOrgId = let affiliationField, documentField /* istanbul ignore else */ - if (orderBy.field === 'user-username') { + if (orderBy.field === 'username') { affiliationField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).userName` documentField = aql`DOCUMENT(users, PARSE_IDENTIFIER(DOCUMENT(affiliations, ${afterId})._to).key).userName` + } else if (orderBy.field === 'display_name') { + affiliationField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).displayName` + documentField = aql`DOCUMENT(users, PARSE_IDENTIFIER(DOCUMENT(affiliations, ${afterId})._to).key).displayName` + } else if (orderBy.field === 'permission') { + affiliationField = aql`rolePriority[affiliation.permission]` + documentField = aql`rolePriority[DOCUMENT(affiliations, ${afterId}).permission]` } afterTemplate = aql` @@ -48,9 +54,15 @@ export const loadAffiliationConnectionsByOrgId = let affiliationField, documentField /* istanbul ignore else */ - if (orderBy.field === 'user-username') { + if (orderBy.field === 'username') { affiliationField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).userName` documentField = aql`DOCUMENT(users, PARSE_IDENTIFIER(DOCUMENT(affiliations, ${beforeId})._to).key).userName` + } else if (orderBy.field === 'display_name') { + affiliationField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).displayName` + documentField = aql`DOCUMENT(users, PARSE_IDENTIFIER(DOCUMENT(affiliations, ${beforeId})._to).key).displayName` + } else if (orderBy.field === 'permission') { + affiliationField = aql`rolePriority[affiliation.permission]` + documentField = aql`rolePriority[DOCUMENT(affiliations, ${beforeId}).permission]` } beforeTemplate = aql` @@ -124,10 +136,18 @@ export const loadAffiliationConnectionsByOrgId = let affField, hasNextPageDocument, hasPreviousPageDocument /* istanbul ignore else */ - if (orderBy.field === 'user-username') { + if (orderBy.field === 'username') { affField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).userName` hasNextPageDocument = aql`DOCUMENT(users, PARSE_IDENTIFIER(LAST(retrievedAffiliations)._to).key).userName` hasPreviousPageDocument = aql`DOCUMENT(users, PARSE_IDENTIFIER(FIRST(retrievedAffiliations)._to).key).userName` + } else if (orderBy.field === 'display_name') { + affField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).displayName` + hasNextPageDocument = aql`DOCUMENT(users, PARSE_IDENTIFIER(LAST(retrievedAffiliations)._to).key).displayName` + hasPreviousPageDocument = aql`DOCUMENT(users, PARSE_IDENTIFIER(FIRST(retrievedAffiliations)._to).key).displayName` + } else if (orderBy.field === 'permission') { + affField = aql`rolePriority[affiliation.permission]` + hasNextPageDocument = aql`rolePriority[LAST(retrievedAffiliations).permission]` + hasPreviousPageDocument = aql`FIRST(retrievedAffiliations).permission` } hasNextPageFilter = aql` @@ -146,8 +166,12 @@ export const loadAffiliationConnectionsByOrgId = let sortByField = aql`` if (typeof orderBy !== 'undefined') { /* istanbul ignore else */ - if (orderBy.field === 'user-username') { + if (orderBy.field === 'username') { sortByField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).userName ${orderBy.direction},` + } else if (orderBy.field === 'display_name') { + sortByField = aql`DOCUMENT(users, PARSE_IDENTIFIER(affiliation._to).key).displayName ${orderBy.direction},` + } else if (orderBy.field === 'permission') { + sortByField = aql`rolePriority[affiliation.permission] ${orderBy.direction},` } } @@ -196,6 +220,14 @@ export const loadAffiliationConnectionsByOrgId = RETURN e._key ) + LET rolePriority = { + "pending": 0, + "owner": 1, + "super_admin": 2, + "admin": 3, + "user": 4 + } + LET retrievedAffiliations = ( FOR affiliation IN affiliations FILTER affiliation._key IN affiliationKeys diff --git a/api/src/enums/affiliation-user-order-field.js b/api/src/enums/affiliation-user-order-field.js index 6efe1b53ce..c7cc3a41fe 100644 --- a/api/src/enums/affiliation-user-order-field.js +++ b/api/src/enums/affiliation-user-order-field.js @@ -1,28 +1,20 @@ -import {GraphQLEnumType} from 'graphql' +import { GraphQLEnumType } from 'graphql' export const AffiliationUserOrderField = new GraphQLEnumType({ name: 'AffiliationUserOrderField', description: 'Properties by which affiliation connections can be ordered.', values: { - USER_USERNAME: { - value: 'user-username', - description: 'Order affiliation edges by username.', + USERNAME: { + value: 'username', + description: 'Order affiliations by username.', }, - USER_DISPLAYNAME: { - value: 'user-displayName', - description: 'Order affiliation edges by displayName.', + DISPLAY_NAME: { + value: 'display_name', + description: 'Order affiliations by display name.', }, - USER_EMAIL_VALIDATED: { - value: 'user-emailValidated', - description: 'Order affiliation edges by user verification status.', - }, - USER_INSIDER: { - value: 'user-insider', - description: 'Order affiliation edges by user insider status.', - }, - USER_AFFILIATIONS_COUNT: { - value: 'user-affiliations-totalCount', - description: 'Order affiliation edges by amount of total affiliations.', + PERMISSION: { + value: 'permission', + description: 'Order affiliations by permission.', }, }, }) diff --git a/api/src/enums/index.js b/api/src/enums/index.js index 6f478eefda..41ea86414b 100644 --- a/api/src/enums/index.js +++ b/api/src/enums/index.js @@ -1,5 +1,6 @@ export * from './affiliation-org-order-field' export * from './affiliation-user-order-field' +export * from './user-order-field' export * from './dkim-order-field' export * from './dkim-result-order-field' export * from './dmarc-order-field' diff --git a/api/src/enums/user-order-field.js b/api/src/enums/user-order-field.js new file mode 100644 index 0000000000..e4f428e9cd --- /dev/null +++ b/api/src/enums/user-order-field.js @@ -0,0 +1,28 @@ +import { GraphQLEnumType } from 'graphql' + +export const UserOrderField = new GraphQLEnumType({ + name: 'UserOrderField', + description: 'Properties by which affiliation connections can be ordered.', + values: { + USER_USERNAME: { + value: 'user-username', + description: 'Order affiliation edges by username.', + }, + USER_DISPLAYNAME: { + value: 'user-displayName', + description: 'Order affiliation edges by displayName.', + }, + USER_EMAIL_VALIDATED: { + value: 'user-emailValidated', + description: 'Order affiliation edges by user verification status.', + }, + USER_INSIDER: { + value: 'user-insider', + description: 'Order affiliation edges by user insider status.', + }, + USER_AFFILIATIONS_COUNT: { + value: 'user-affiliations-totalCount', + description: 'Order affiliation edges by amount of total affiliations.', + }, + }, +}) diff --git a/api/src/user/index.js b/api/src/user/index.js index 1b5bd9dcd0..ee648b9915 100644 --- a/api/src/user/index.js +++ b/api/src/user/index.js @@ -3,3 +3,4 @@ export * from './mutations' export * from './objects' export * from './queries' export * from './unions' +export * from './inputs' diff --git a/api/src/user/inputs/__tests__/user-order.test.js b/api/src/user/inputs/__tests__/user-order.test.js new file mode 100644 index 0000000000..0bac20decf --- /dev/null +++ b/api/src/user/inputs/__tests__/user-order.test.js @@ -0,0 +1,21 @@ +import { GraphQLNonNull } from 'graphql' + +import { userOrder } from '../user-order' +import { OrderDirection, UserOrderField } from '../../../enums' + +describe('given the affiliationOrder input object', () => { + describe('testing fields', () => { + it('has a direction field', () => { + const demoType = userOrder.getFields() + + expect(demoType).toHaveProperty('direction') + expect(demoType.direction.type).toMatchObject(new GraphQLNonNull(OrderDirection)) + }) + it('has a field field', () => { + const demoType = userOrder.getFields() + + expect(demoType).toHaveProperty('field') + expect(demoType.field.type).toMatchObject(new GraphQLNonNull(UserOrderField)) + }) + }) +}) diff --git a/api/src/user/inputs/index.js b/api/src/user/inputs/index.js new file mode 100644 index 0000000000..f474ae42b6 --- /dev/null +++ b/api/src/user/inputs/index.js @@ -0,0 +1 @@ +export * from './user-order' diff --git a/api/src/user/inputs/user-order.js b/api/src/user/inputs/user-order.js new file mode 100644 index 0000000000..ea691c7c6e --- /dev/null +++ b/api/src/user/inputs/user-order.js @@ -0,0 +1,18 @@ +import { GraphQLInputObjectType, GraphQLNonNull } from 'graphql' + +import { OrderDirection, UserOrderField } from '../../enums' + +export const userOrder = new GraphQLInputObjectType({ + name: 'UserOrder', + description: 'Ordering options for affiliation connections.', + fields: () => ({ + field: { + type: new GraphQLNonNull(UserOrderField), + description: 'The field to order affiliations by.', + }, + direction: { + type: new GraphQLNonNull(OrderDirection), + description: 'The ordering direction.', + }, + }), +}) diff --git a/api/src/user/queries/find-my-users.js b/api/src/user/queries/find-my-users.js index 7272427ea1..38ae198971 100644 --- a/api/src/user/queries/find-my-users.js +++ b/api/src/user/queries/find-my-users.js @@ -1,15 +1,15 @@ -import {GraphQLString} from 'graphql' -import {connectionArgs} from 'graphql-relay' +import { GraphQLString } from 'graphql' +import { connectionArgs } from 'graphql-relay' -import {affiliationUserOrder} from '../../affiliation/inputs' -import {userConnection} from '../objects/user-connection' +import { userOrder } from '../../user/inputs' +import { userConnection } from '../objects/user-connection' export const findMyUsers = { type: userConnection.connectionType, description: 'Select users an admin has access to.', args: { orderBy: { - type: affiliationUserOrder, + type: userOrder, description: 'Ordering options for user affiliation', }, search: { @@ -23,20 +23,15 @@ export const findMyUsers = { args, { userKey, - auth: { - checkSuperAdmin, - userRequired, - verifiedRequired, - superAdminRequired, - }, - loaders: {loadUserConnectionsByUserId}, + auth: { checkSuperAdmin, userRequired, verifiedRequired, superAdminRequired }, + loaders: { loadUserConnectionsByUserId }, }, ) => { const user = await userRequired() - verifiedRequired({user}) + verifiedRequired({ user }) const isSuperAdmin = await checkSuperAdmin() - superAdminRequired({user, isSuperAdmin}) + superAdminRequired({ user, isSuperAdmin }) const userConnections = await loadUserConnectionsByUserId({ isSuperAdmin, diff --git a/frontend/mocking/faked_schema.js b/frontend/mocking/faked_schema.js index f5578b4b79..c2a392d24a 100644 --- a/frontend/mocking/faked_schema.js +++ b/frontend/mocking/faked_schema.js @@ -324,7 +324,7 @@ export const getTypeNames = () => gql` """ Ordering options for user affiliation """ - orderBy: AffiliationUserOrder + orderBy: UserOrder """ String used to search for users. @@ -2232,29 +2232,19 @@ export const getTypeNames = () => gql` """ enum AffiliationUserOrderField { """ - Order affiliation edges by username. + Order affiliations by username. """ - USER_USERNAME + USERNAME """ - Order affiliation edges by displayName. - """ - USER_DISPLAYNAME - + Order affiliations by display name. """ - Order affiliation edges by user verification status. - """ - USER_EMAIL_VALIDATED - - """ - Order affiliation edges by user insider status. - """ - USER_INSIDER + DISPLAY_NAME """ - Order affiliation edges by amount of total affiliations. + Order affiliations by permission. """ - USER_AFFILIATIONS_COUNT + PERMISSION } """ @@ -4388,6 +4378,51 @@ export const getTypeNames = () => gql` cursor: String! } + """ + Ordering options for affiliation connections. + """ + input UserOrder { + """ + The field to order affiliations by. + """ + field: UserOrderField! + + """ + The ordering direction. + """ + direction: OrderDirection! + } + + """ + Properties by which affiliation connections can be ordered. + """ + enum UserOrderField { + """ + Order affiliation edges by username. + """ + USER_USERNAME + + """ + Order affiliation edges by displayName. + """ + USER_DISPLAYNAME + + """ + Order affiliation edges by user verification status. + """ + USER_EMAIL_VALIDATED + + """ + Order affiliation edges by user insider status. + """ + USER_INSIDER + + """ + Order affiliation edges by amount of total affiliations. + """ + USER_AFFILIATIONS_COUNT + } + """ Domain object containing information for a given domain. """ diff --git a/frontend/src/admin/UserList.js b/frontend/src/admin/UserList.js index 65586c43c6..41e59e72e5 100644 --- a/frontend/src/admin/UserList.js +++ b/frontend/src/admin/UserList.js @@ -51,7 +51,12 @@ export function UserList({ includePending, permission, orgSlug, orgId }) { usePaginatedCollection({ fetchForward: FORWARD, recordsPerPage: usersPerPage, - variables: { orgSlug, search: debouncedSearchUser, includePending }, + variables: { + orgSlug, + search: debouncedSearchUser, + includePending, + orderBy: { field: 'PERMISSION', direction: 'ASC' }, + }, relayRoot: 'findOrganizationBySlug.affiliations', fetchPolicy: 'cache-and-network', nextFetchPolicy: 'cache-first', diff --git a/frontend/src/admin/__tests__/AdminPage.test.js b/frontend/src/admin/__tests__/AdminPage.test.js index 503e31feea..1d4feb70a1 100644 --- a/frontend/src/admin/__tests__/AdminPage.test.js +++ b/frontend/src/admin/__tests__/AdminPage.test.js @@ -290,7 +290,13 @@ function mocks() { { request: { query: PAGINATED_ORG_AFFILIATIONS_ADMIN_PAGE, - variables: { orgSlug: 'Wolf-Group', first: 20, search: '', includePending: true }, + variables: { + orgSlug: 'Wolf-Group', + first: 20, + search: '', + includePending: true, + orderBy: { field: 'PERMISSION', direction: 'ASC' }, + }, }, result: { data: { diff --git a/frontend/src/admin/__tests__/UserList.test.js b/frontend/src/admin/__tests__/UserList.test.js index 8cf2f83397..0a79d9f4d9 100644 --- a/frontend/src/admin/__tests__/UserList.test.js +++ b/frontend/src/admin/__tests__/UserList.test.js @@ -30,14 +30,26 @@ const successMocks = [ { request: { query: FORWARD, - variables: { first: 20, orgSlug: 'test-org.slug', search: '', includePending: true }, + variables: { + first: 20, + orgSlug: 'test-org.slug', + search: '', + includePending: true, + orderBy: { direction: 'ASC', field: 'PERMISSION' }, + }, }, result: { data: rawOrgUserListData }, }, { request: { query: FORWARD, - variables: { first: 20, orgSlug: 'test-org.slug', search: '', includePending: true }, + variables: { + first: 20, + orgSlug: 'test-org.slug', + search: '', + includePending: true, + orderBy: { direction: 'ASC', field: 'PERMISSION' }, + }, }, result: { data: rawOrgUserListData }, }, diff --git a/frontend/src/components/SearchBox.js b/frontend/src/components/SearchBox.js index 68f343bc4c..7e2b2114ba 100644 --- a/frontend/src/components/SearchBox.js +++ b/frontend/src/components/SearchBox.js @@ -60,7 +60,7 @@ export function SearchBox({ /> - + {onToggle && } Sort by: diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 50d4f18e1f..9106235bca 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -618,10 +618,10 @@ export const PAGINATED_ORG_DOMAINS = gql` ` export const PAGINATED_ORG_AFFILIATIONS = gql` - query OrgUsersNext($slug: Slug!, $first: Int, $after: String) { + query OrgUsersNext($slug: Slug!, $first: Int, $after: String, $search: String, $orderBy: AffiliationUserOrder) { findOrganizationBySlug(orgSlug: $slug) { id - affiliations(first: $first, after: $after) { + affiliations(first: $first, after: $after, search: $search, orderBy: $orderBy) { pageInfo { hasNextPage endCursor @@ -957,7 +957,7 @@ export const IS_LOGIN_REQUIRED = gql` ` export const FIND_MY_USERS = gql` - query FindMyUsers($first: Int, $after: String, $orderBy: AffiliationUserOrder, $search: String) { + query FindMyUsers($first: Int, $after: String, $orderBy: UserOrder, $search: String) { findMyUsers(orderBy: $orderBy, first: $first, after: $after, search: $search) { edges { cursor diff --git a/frontend/src/locales/en.po b/frontend/src/locales/en.po index b12d594941..a6e8376850 100644 --- a/frontend/src/locales/en.po +++ b/frontend/src/locales/en.po @@ -224,7 +224,7 @@ msgstr "Admin Profile" msgid "Admin accounts must activate a multi-factor authentication option." msgstr "Admin accounts must activate a multi-factor authentication option." -#: src/app/ReadGuidancePage.js:342 +#: src/app/ReadGuidancePage.js:332 msgid "Admins of an organization can add domains to their list." msgstr "Admins of an organization can add domains to their list." @@ -261,7 +261,7 @@ msgstr "An error has occurred." msgid "An error occurred when fetching this organization's information" msgstr "An error occurred when fetching this organization's information" -#: src/domains/DomainsPage.js:41 +#: src/domains/DomainsPage.js:43 msgid "An error occurred when you attempted to download all domain statuses." msgstr "An error occurred when you attempted to download all domain statuses." @@ -345,7 +345,7 @@ msgstr "An error occurred while verifying your phone number." msgid "An error occurred." msgstr "An error occurred." -#: src/app/ReadGuidancePage.js:420 +#: src/app/ReadGuidancePage.js:410 msgid "Another possibility is that your domain is not internet facing." msgstr "Another possibility is that your domain is not internet facing." @@ -415,7 +415,7 @@ msgstr "Authenticate" msgid "BETA" msgstr "BETA" -#: src/domains/DomainsPage.js:203 +#: src/domains/DomainsPage.js:205 #: src/organizationDetails/OrganizationDomains.js:343 msgid "BLOCKED" msgstr "BLOCKED" @@ -456,7 +456,7 @@ msgstr "Blocked" msgid "By accessing, browsing, or using our website or our services, you acknowledge that you have read, understood, and agree to be bound by these Terms and Conditions, and to comply with all applicable laws and regulations. We recommend that you review all Terms and Conditions periodically to understand any updates or changes that may affect you. If you do not agree to these Terms and Conditions, please refrain from using our website, products and services." msgstr "By accessing, browsing, or using our website or our services, you acknowledge that you have read, understood, and agree to be bound by these Terms and Conditions, and to comply with all applicable laws and regulations. We recommend that you review all Terms and Conditions periodically to understand any updates or changes that may affect you. If you do not agree to these Terms and Conditions, please refrain from using our website, products and services." -#: src/app/ReadGuidancePage.js:410 +#: src/app/ReadGuidancePage.js:400 msgid "By default our scanners check domains ending in “.gc.ca” and “.canada.ca”. If your domain is outside that set, you need to contact us to let us know. Send an email to <0>TBS Cyber Security to confirm your ownership of that domain." msgstr "By default our scanners check domains ending in “.gc.ca” and “.canada.ca”. If your domain is outside that set, you need to contact us to let us know. Send an email to <0>TBS Cyber Security to confirm your ownership of that domain." @@ -469,10 +469,13 @@ msgstr "By default our scanners check domains ending in “.gc.ca” and “.can #~ msgstr "CCS Injection Vulnerability:" #: src/app/SlideMessage.js:55 -#: src/landing/LandingPage.js:28 msgid "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email and <1>web services. Track how government sites are becoming more secure." msgstr "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email and <1>web services. Track how government sites are becoming more secure." +#: src/landing/LandingPage.js:29 +msgid "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email<1/> and <2>web<3/> services. Track how government sites are becoming more secure." +msgstr "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email<1/> and <2>web<3/> services. Track how government sites are becoming more secure." + #: src/admin/SuperAdminUserList.js:403 #: src/user/UserPage.js:260 msgid "Cancel" @@ -487,12 +490,12 @@ msgid "Certificate chain info could not be found during the scan." msgstr "Certificate chain info could not be found during the scan." #: src/domains/DomainCard.js:193 -#: src/domains/DomainsPage.js:187 +#: src/domains/DomainsPage.js:189 #: src/organizationDetails/OrganizationDomains.js:316 msgid "Certificates" msgstr "Certificates" -#: src/domains/DomainsPage.js:79 +#: src/domains/DomainsPage.js:81 #: src/organizationDetails/OrganizationDomains.js:97 msgid "Certificates Status" msgstr "Certificates Status" @@ -543,13 +546,13 @@ msgid "Check your associated Tracker email for the verification link" msgstr "Check your associated Tracker email for the verification link" #: src/domains/DomainCard.js:195 -#: src/domains/DomainsPage.js:189 +#: src/domains/DomainsPage.js:191 #: src/guidance/WebTLSResults.js:106 #: src/organizationDetails/OrganizationDomains.js:318 msgid "Ciphers" msgstr "Ciphers" -#: src/domains/DomainsPage.js:80 +#: src/domains/DomainsPage.js:82 #: src/organizationDetails/OrganizationDomains.js:98 msgid "Ciphers Status" msgstr "Ciphers Status" @@ -654,7 +657,7 @@ msgstr "Confirm subdomain discovery for <0>{domainUrl}:" msgid "Connection Results" msgstr "Connection Results" -#: src/app/ReadGuidancePage.js:180 +#: src/app/ReadGuidancePage.js:170 msgid "Consider prioritizing websites and web services that exchange Protected data." msgstr "Consider prioritizing websites and web services that exchange Protected data." @@ -748,19 +751,19 @@ msgstr "Current Password:" #~ msgstr "Current Phone Number:" #: src/domains/DomainCard.js:196 -#: src/domains/DomainsPage.js:190 +#: src/domains/DomainsPage.js:192 #: src/guidance/WebTLSResults.js:156 #: src/organizationDetails/OrganizationDomains.js:319 #: src/organizationDetails/OrganizationDomains.js:377 msgid "Curves" msgstr "Curves" -#: src/domains/DomainsPage.js:81 +#: src/domains/DomainsPage.js:83 #: src/organizationDetails/OrganizationDomains.js:99 msgid "Curves Status" msgstr "Curves Status" -#: src/domains/DomainsPage.js:194 +#: src/domains/DomainsPage.js:196 #: src/organizationDetails/OrganizationDomains.js:323 msgid "DKIM" msgstr "DKIM" @@ -799,7 +802,7 @@ msgstr "DKIM Selectors" msgid "DKIM Selectors:" msgstr "DKIM Selectors:" -#: src/domains/DomainsPage.js:84 +#: src/domains/DomainsPage.js:86 #: src/organizationDetails/OrganizationDomains.js:102 msgid "DKIM Status" msgstr "DKIM Status" @@ -816,7 +819,7 @@ msgstr "DKIM record and keys are deployed and valid" #~ msgid "DKIM record could not be found for this selector." #~ msgstr "DKIM record could not be found for this selector." -#: src/domains/DomainsPage.js:198 +#: src/domains/DomainsPage.js:200 #: src/organizationDetails/OrganizationDomains.js:327 msgid "DMARC" msgstr "DMARC" @@ -863,7 +866,7 @@ msgstr "DMARC Report" msgid "DMARC Report for {domainSlug}" msgstr "DMARC Report for {domainSlug}" -#: src/domains/DomainsPage.js:85 +#: src/domains/DomainsPage.js:87 #: src/organizationDetails/OrganizationDomains.js:103 msgid "DMARC Status" msgstr "DMARC Status" @@ -971,7 +974,7 @@ msgstr "Details for a given guidance tag can be found on the wiki, see below." #~ msgid "Develop a prioritized schedule to address any failings. Consider prioritizing websites and web services that exchange Protected data." #~ msgstr "Develop a prioritized schedule to address any failings. Consider prioritizing websites and web services that exchange Protected data." -#: src/app/ReadGuidancePage.js:177 +#: src/app/ReadGuidancePage.js:167 msgid "Develop a prioritized schedule to address any failings:" msgstr "Develop a prioritized schedule to address any failings:" @@ -1004,8 +1007,8 @@ msgstr "Disposition" #: src/admin/AuditLogTable.js:67 #: src/dmarc/DmarcByDomainPage.js:106 #: src/dmarc/DmarcByDomainPage.js:272 -#: src/domains/DomainsPage.js:76 -#: src/domains/DomainsPage.js:180 +#: src/domains/DomainsPage.js:78 +#: src/domains/DomainsPage.js:182 #: src/organizationDetails/OrganizationDomains.js:309 #: src/organizationDetails/OrganizationDomains.js:364 msgid "Domain" @@ -1015,7 +1018,7 @@ msgstr "Domain" msgid "Domain List" msgstr "Domain List" -#: src/app/ReadGuidancePage.js:481 +#: src/app/ReadGuidancePage.js:471 msgid "Domain Name System (DNS) Services Management Configuration Requirements - Canada.ca" msgstr "Domain Name System (DNS) Services Management Configuration Requirements - Canada.ca" @@ -1065,8 +1068,8 @@ msgstr "Domain:" #: src/app/App.js:136 #: src/app/App.js:247 #: src/app/FloatingMenu.js:116 -#: src/domains/DomainsPage.js:90 -#: src/domains/DomainsPage.js:140 +#: src/domains/DomainsPage.js:92 +#: src/domains/DomainsPage.js:142 #: src/organizationDetails/OrganizationDetails.js:132 #: src/organizationDetails/OrganizationDomains.js:124 #: src/summaries/Doughnut.js:49 @@ -1075,7 +1078,7 @@ msgstr "Domain:" msgid "Domains" msgstr "Domains" -#: src/app/ReadGuidancePage.js:121 +#: src/app/ReadGuidancePage.js:111 msgid "Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." msgstr "Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." @@ -1142,6 +1145,7 @@ msgstr "Edit User" #: src/admin/SuperAdminUserList.js:148 #: src/components/fields/EmailField.js:15 #: src/domains/DomainCard.js:201 +#: src/organizationDetails/OrganizationAffiliations.js:45 #: src/user/EditableUserTFAMethod.js:166 msgid "Email" msgstr "Email" @@ -1151,7 +1155,7 @@ msgstr "Email" msgid "Email Guidance" msgstr "Email Guidance" -#: src/app/ReadGuidancePage.js:493 +#: src/app/ReadGuidancePage.js:483 msgid "Email Management Services Configuration Requirements - Canada.ca" msgstr "Email Management Services Configuration Requirements - Canada.ca" @@ -1159,7 +1163,7 @@ msgstr "Email Management Services Configuration Requirements - Canada.ca" msgid "Email Scan Results" msgstr "Email Scan Results" -#: src/app/ReadGuidancePage.js:270 +#: src/app/ReadGuidancePage.js:260 msgid "Email Security:" msgstr "Email Security:" @@ -1382,7 +1386,7 @@ msgstr "Filters:" #~ msgid "For any questions or concerns related to the ITPIN and related implementation guidance, contact TBS Cybersecurity." #~ msgstr "For any questions or concerns related to the ITPIN and related implementation guidance, contact TBS Cybersecurity." -#: src/app/ReadGuidancePage.js:526 +#: src/app/ReadGuidancePage.js:516 msgid "For any questions or concerns, please contact <0>TBS Cyber Security ." msgstr "For any questions or concerns, please contact <0>TBS Cyber Security ." @@ -1431,7 +1435,7 @@ msgstr "Forgot your password?" msgid "French" msgstr "French" -#: src/app/ReadGuidancePage.js:317 +#: src/app/ReadGuidancePage.js:307 msgid "Frequently Asked Questions" msgstr "Frequently Asked Questions" @@ -1475,7 +1479,7 @@ msgstr "Getting Started" msgid "Getting an Account:" msgstr "Getting an Account:" -#: src/domains/DomainsPage.js:151 +#: src/domains/DomainsPage.js:153 msgid "Getting domain statuses" msgstr "Getting domain statuses" @@ -1525,7 +1529,7 @@ msgid "HIDDEN" msgstr "HIDDEN" #: src/domains/DomainCard.js:192 -#: src/domains/DomainsPage.js:186 +#: src/domains/DomainsPage.js:188 #: src/organizationDetails/OrganizationDomains.js:315 msgid "HSTS" msgstr "HSTS" @@ -1550,7 +1554,7 @@ msgstr "HSTS Parsed" msgid "HSTS Preloaded" msgstr "HSTS Preloaded" -#: src/domains/DomainsPage.js:78 +#: src/domains/DomainsPage.js:80 #: src/organizationDetails/OrganizationDomains.js:96 msgid "HSTS Status" msgstr "HSTS Status" @@ -1572,7 +1576,7 @@ msgid "HTTP Upgrades" msgstr "HTTP Upgrades" #: src/domains/DomainCard.js:191 -#: src/domains/DomainsPage.js:183 +#: src/domains/DomainsPage.js:185 #: src/organizationDetails/OrganizationDomains.js:312 msgid "HTTPS" msgstr "HTTPS" @@ -1602,7 +1606,7 @@ msgstr "HTTPS Live" msgid "HTTPS Scan Complete" msgstr "HTTPS Scan Complete" -#: src/domains/DomainsPage.js:77 +#: src/domains/DomainsPage.js:79 #: src/organizationDetails/OrganizationDomains.js:95 msgid "HTTPS Status" msgstr "HTTPS Status" @@ -1678,7 +1682,7 @@ msgstr "Hostname Matches: {0}" #~ msgid "Hostname Validated" #~ msgstr "Hostname Validated" -#: src/app/ReadGuidancePage.js:339 +#: src/app/ReadGuidancePage.js:329 msgid "How can I edit my domain list?" msgstr "How can I edit my domain list?" @@ -1729,7 +1733,7 @@ msgstr "Identify any current affiliated Tracker users within your organization a #~ msgid "Identify resources required to act as central point(s) of contact with Treasury Board of Canada Secretariat (TBS). Share the contact list with <0>TBS Cyber Security, as required." #~ msgstr "Identify resources required to act as central point(s) of contact with Treasury Board of Canada Secretariat (TBS). Share the contact list with <0>TBS Cyber Security, as required." -#: src/app/ReadGuidancePage.js:130 +#: src/app/ReadGuidancePage.js:120 msgid "If a domain is no longer in use but still exists on the DNS, it is still vulnerable to email spoofing attacks, where an attacker can send an email that appears to be coming from your domain." msgstr "If a domain is no longer in use but still exists on the DNS, it is still vulnerable to email spoofing attacks, where an attacker can send an email that appears to be coming from your domain." @@ -1770,7 +1774,7 @@ msgstr "Immediately" #~ msgid "Implementation" #~ msgstr "Implementation" -#: src/app/ReadGuidancePage.js:505 +#: src/app/ReadGuidancePage.js:495 msgid "Implementation guidance: email domain protection (ITSP.40.065 v1.1) - Canadian Centre for Cyber Security" msgstr "Implementation guidance: email domain protection (ITSP.40.065 v1.1) - Canadian Centre for Cyber Security" @@ -1778,11 +1782,11 @@ msgstr "Implementation guidance: email domain protection (ITSP.40.065 v1.1) - Ca #~ msgid "Implementation:" #~ msgstr "Implementation:" -#: src/app/ReadGuidancePage.js:250 +#: src/app/ReadGuidancePage.js:240 msgid "Implementation: <0>Guidance on securely configuring network protocols (ITSP.40.062)" msgstr "Implementation: <0>Guidance on securely configuring network protocols (ITSP.40.062)" -#: src/app/ReadGuidancePage.js:293 +#: src/app/ReadGuidancePage.js:283 msgid "Implementation: <0>Implementation guidance: email domain protection (ITSP.40.065 v1.1)" msgstr "Implementation: <0>Implementation guidance: email domain protection (ITSP.40.065 v1.1)" @@ -1998,7 +2002,7 @@ msgstr "Invalid email" msgid "Invite Requested" msgstr "Invite Requested" -#: src/admin/UserList.js:154 +#: src/admin/UserList.js:159 msgid "Invite User" msgstr "Invite User" @@ -2014,7 +2018,7 @@ msgstr "Is SPF aligned. Can be true or false." msgid "Issuer:" msgstr "Issuer:" -#: src/app/ReadGuidancePage.js:324 +#: src/app/ReadGuidancePage.js:314 msgid "It is not clear to me why a domain has failed?" msgstr "It is not clear to me why a domain has failed?" @@ -2022,7 +2026,7 @@ msgstr "It is not clear to me why a domain has failed?" #~ msgid "It is recommended that SSC partners contact their SSC Service Delivery Manager to discuss the departmental action plan and required steps to submit a request for change." #~ msgstr "It is recommended that SSC partners contact their SSC Service Delivery Manager to discuss the departmental action plan and required steps to submit a request for change." -#: src/app/ReadGuidancePage.js:186 +#: src/app/ReadGuidancePage.js:176 msgid "It is recommended that Shared Service Canada (SSC) partners contact their SSC Service Delivery Manager to discuss action plans and required steps to submit a request for change." msgstr "It is recommended that Shared Service Canada (SSC) partners contact their SSC Service Delivery Manager to discuss action plans and required steps to submit a request for change." @@ -2100,11 +2104,11 @@ msgstr "Let's get you set up so you can verify your account information and begi msgid "Limitation of Liability" msgstr "Limitation of Liability" -#: src/app/ReadGuidancePage.js:207 +#: src/app/ReadGuidancePage.js:197 msgid "Links to Review:" msgstr "Links to Review:" -#: src/app/ReadGuidancePage.js:220 +#: src/app/ReadGuidancePage.js:210 msgid "List of guidance tags" msgstr "List of guidance tags" @@ -2173,7 +2177,7 @@ msgstr "Monitor DMARC reports;" msgid "More details" msgstr "More details" -#: src/app/ReadGuidancePage.js:513 +#: src/app/ReadGuidancePage.js:503 msgid "Mozilla SSL Configuration Generator" msgstr "Mozilla SSL Configuration Generator" @@ -2199,12 +2203,13 @@ msgstr "Must Staple" msgid "NEW" msgstr "NEW" -#: src/domains/DomainsPage.js:202 +#: src/domains/DomainsPage.js:204 msgid "NXDOMAIN" msgstr "NXDOMAIN" #: src/createOrganization/CreateOrganizationPage.js:173 #: src/createOrganization/CreateOrganizationPage.js:178 +#: src/organizationDetails/OrganizationAffiliations.js:46 #: src/organizations/Organizations.js:61 msgid "Name" msgstr "Name" @@ -2317,7 +2322,7 @@ msgstr "No" #~ msgstr "No DMARC phase information available for this organization." #: src/admin/AdminDomains.js:256 -#: src/domains/DomainsPage.js:97 +#: src/domains/DomainsPage.js:99 #: src/organizationDetails/OrganizationDomains.js:249 msgid "No Domains" msgstr "No Domains" @@ -2330,7 +2335,7 @@ msgstr "No Domains" msgid "No Organizations" msgstr "No Organizations" -#: src/organizationDetails/OrganizationAffiliations.js:43 +#: src/organizationDetails/OrganizationAffiliations.js:59 msgid "No Users" msgstr "No Users" @@ -2362,12 +2367,12 @@ msgstr "No data for the Fully Aligned by IP Address table" msgid "No data for the SPF Failures by IP Address table" msgstr "No data for the SPF Failures by IP Address table" -#: src/domains/DomainsPage.js:161 -#: src/domains/DomainsPage.js:169 +#: src/domains/DomainsPage.js:163 +#: src/domains/DomainsPage.js:171 msgid "No data found" msgstr "No data found" -#: src/domains/DomainsPage.js:162 +#: src/domains/DomainsPage.js:164 msgid "No data found when retrieving all domain statuses." msgstr "No data found when retrieving all domain statuses." @@ -2396,7 +2401,7 @@ msgid "No scan data is currently available for this service. You may request a s msgstr "No scan data is currently available for this service. You may request a scan using the refresh button, or wait up to 24 hours for data to refresh." #: src/admin/SuperAdminUserList.js:161 -#: src/admin/UserList.js:68 +#: src/admin/UserList.js:73 msgid "No users" msgstr "No users" @@ -2471,7 +2476,7 @@ msgstr "OWNER" #~ msgid "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC Public Facing Web Services" #~ msgstr "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC Public Facing Web Services" -#: src/app/ReadGuidancePage.js:192 +#: src/app/ReadGuidancePage.js:182 msgid "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC public facing web services" msgstr "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC public facing web services" @@ -2479,7 +2484,7 @@ msgstr "Obtain certificates from a GC-approved certificate source as outlined in #~ msgid "Obtain the configuration guidance for the appropriate endpoints (e.g. web server, network/security appliances, etc.) and implement recommended configurations to support HTTPS." #~ msgstr "Obtain the configuration guidance for the appropriate endpoints (e.g. web server, network/security appliances, etc.) and implement recommended configurations to support HTTPS." -#: src/app/ReadGuidancePage.js:198 +#: src/app/ReadGuidancePage.js:188 msgid "Obtain the configuration guidance for the appropriate endpoints (e.g., web server, network/security appliances, etc.) and implement recommended configurations." msgstr "Obtain the configuration guidance for the appropriate endpoints (e.g., web server, network/security appliances, etc.) and implement recommended configurations." @@ -2496,11 +2501,11 @@ msgstr "Old Value:" msgid "Once access is given to your department by the TBS Cyber team, they will be able to invite and manage other users within the organization and manage the domain list." msgstr "Once access is given to your department by the TBS Cyber team, they will be able to invite and manage other users within the organization and manage the domain list." -#: src/app/ReadGuidancePage.js:345 +#: src/app/ReadGuidancePage.js:335 msgid "Only <0>TBS Cyber Security can remove domains from your organization. Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." msgstr "Only <0>TBS Cyber Security can remove domains from your organization. Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." -#: src/app/ReadGuidancePage.js:429 +#: src/app/ReadGuidancePage.js:419 msgid "Options include contacting the <0>SSC WebSSL services team and/or using <1>Let's Encrypt. For more information, please refer to the guidance on <2>Recommendations for TLS Server Certificates." msgstr "Options include contacting the <0>SSC WebSSL services team and/or using <1>Let's Encrypt. For more information, please refer to the guidance on <2>Recommendations for TLS Server Certificates." @@ -2694,7 +2699,7 @@ msgstr "Please allow up to 24 hours for summaries to reflect any changes." msgid "Please choose your preferred language" msgstr "Please choose your preferred language" -#: src/app/ReadGuidancePage.js:327 +#: src/app/ReadGuidancePage.js:317 msgid "Please contact <0>TBS Cyber Security for help." msgstr "Please contact <0>TBS Cyber Security for help." @@ -2781,19 +2786,19 @@ msgstr "Privacy Notice Statement" msgid "Prod" msgstr "Prod" -#: src/app/ReadGuidancePage.js:518 +#: src/app/ReadGuidancePage.js:508 msgid "Protect domains that do not send email - GOV.UK (www.gov.uk)" msgstr "Protect domains that do not send email - GOV.UK (www.gov.uk)" #: src/domains/DomainCard.js:194 -#: src/domains/DomainsPage.js:188 +#: src/domains/DomainsPage.js:190 #: src/guidance/WebTLSResults.js:53 #: src/organizationDetails/OrganizationDomains.js:317 #: src/organizationDetails/OrganizationDomains.js:378 msgid "Protocols" msgstr "Protocols" -#: src/domains/DomainsPage.js:82 +#: src/domains/DomainsPage.js:84 #: src/organizationDetails/OrganizationDomains.js:100 msgid "Protocols Status" msgstr "Protocols Status" @@ -2859,7 +2864,7 @@ msgstr "Received Chain Has Valid Order" msgid "Record:" msgstr "Record:" -#: src/app/ReadGuidancePage.js:470 +#: src/app/ReadGuidancePage.js:460 msgid "References:" msgstr "References:" @@ -2913,7 +2918,7 @@ msgstr "Request Invite" msgid "Request a domain to be scanned:" msgstr "Request a domain to be scanned:" -#: src/domains/DomainsPage.js:152 +#: src/domains/DomainsPage.js:154 msgid "Request successfully sent to get all domain statuses - this may take a minute." msgstr "Request successfully sent to get all domain statuses - this may take a minute." @@ -2929,11 +2934,11 @@ msgstr "Requested subdomain scan" #~ msgid "Requests for updates can be sent directly to <0>TBS Cyber Security." #~ msgstr "Requests for updates can be sent directly to <0>TBS Cyber Security." -#: src/app/ReadGuidancePage.js:275 +#: src/app/ReadGuidancePage.js:265 msgid "Requirements: <0>Email Management Services Configuration Requirements" msgstr "Requirements: <0>Email Management Services Configuration Requirements" -#: src/app/ReadGuidancePage.js:232 +#: src/app/ReadGuidancePage.js:222 msgid "Requirements: <0>Web Sites and Services Management Configuration Requirements" msgstr "Requirements: <0>Web Sites and Services Management Configuration Requirements" @@ -2980,6 +2985,10 @@ msgstr "Results for scans of web technologies (TLS, HTTPS)." msgid "Revoked:" msgstr "Revoked:" +#: src/organizationDetails/OrganizationAffiliations.js:47 +msgid "Role" +msgstr "Role" + #: src/admin/UserListModal.js:106 msgid "Role updated" msgstr "Role updated" @@ -2997,12 +3006,12 @@ msgstr "Rotate DKIM keys annually." msgid "SAN List:" msgstr "SAN List:" -#: src/domains/DomainsPage.js:208 +#: src/domains/DomainsPage.js:210 #: src/organizationDetails/OrganizationDomains.js:348 msgid "SCAN PENDING" msgstr "SCAN PENDING" -#: src/domains/DomainsPage.js:192 +#: src/domains/DomainsPage.js:194 #: src/organizationDetails/OrganizationDomains.js:321 msgid "SPF" msgstr "SPF" @@ -3029,7 +3038,7 @@ msgstr "SPF Failures by IP Address" msgid "SPF Results" msgstr "SPF Results" -#: src/domains/DomainsPage.js:83 +#: src/domains/DomainsPage.js:85 #: src/organizationDetails/OrganizationDomains.js:101 msgid "SPF Status" msgstr "SPF Status" @@ -3127,7 +3136,7 @@ msgstr "Search by initiated by, resource name" #: src/dmarc/DmarcByDomainPage.js:195 #: src/dmarc/DmarcByDomainPage.js:245 -#: src/domains/DomainsPage.js:226 +#: src/domains/DomainsPage.js:228 #: src/organizationDetails/OrganizationDomains.js:365 msgid "Search for a domain" msgstr "Search for a domain" @@ -3136,6 +3145,10 @@ msgstr "Search for a domain" msgid "Search for a user (email)" msgstr "Search for a user (email)" +#: src/organizationDetails/OrganizationAffiliations.js:90 +msgid "Search for a user by email" +msgstr "Search for a user by email" + #: src/admin/AuditLogTable.js:188 #~ msgid "Search for an activity" #~ msgstr "Search for an activity" @@ -3145,7 +3158,7 @@ msgid "Search for an organization" msgstr "Search for an organization" #: src/admin/AdminDomains.js:349 -#: src/admin/UserList.js:139 +#: src/admin/UserList.js:144 #: src/components/ReactTableGlobalFilter.js:36 #: src/components/SearchBox.js:44 msgid "Search:" @@ -3263,7 +3276,7 @@ msgstr "Shows if the HTTPS endpoint downgrades to unsecured HTTP immediately, ev msgid "Shows if the certificate bundle provided from the server included the root certificate." msgstr "Shows if the certificate bundle provided from the server included the root certificate." -#: src/domains/DomainsPage.js:187 +#: src/domains/DomainsPage.js:189 #: src/organizationDetails/OrganizationDomains.js:316 msgid "Shows if the domain has a valid SSL certificate." msgstr "Shows if the domain has a valid SSL certificate." @@ -3283,42 +3296,42 @@ msgstr "Shows if the domain has a valid SSL certificate." #~ msgid "Shows if the domain is policy compliant." #~ msgstr "Shows if the domain is policy compliant." -#: src/domains/DomainsPage.js:195 +#: src/domains/DomainsPage.js:197 #: src/organizationDetails/OrganizationDomains.js:324 msgid "Shows if the domain meets the DomainKeys Identified Mail (DKIM) requirements." msgstr "Shows if the domain meets the DomainKeys Identified Mail (DKIM) requirements." -#: src/domains/DomainsPage.js:186 +#: src/domains/DomainsPage.js:188 #: src/organizationDetails/OrganizationDomains.js:315 msgid "Shows if the domain meets the HSTS requirements." msgstr "Shows if the domain meets the HSTS requirements." -#: src/domains/DomainsPage.js:184 +#: src/domains/DomainsPage.js:186 #: src/organizationDetails/OrganizationDomains.js:313 msgid "Shows if the domain meets the Hypertext Transfer Protocol Secure (HTTPS) requirements." msgstr "Shows if the domain meets the Hypertext Transfer Protocol Secure (HTTPS) requirements." -#: src/domains/DomainsPage.js:199 +#: src/domains/DomainsPage.js:201 #: src/organizationDetails/OrganizationDomains.js:328 msgid "Shows if the domain meets the Message Authentication, Reporting, and Conformance (DMARC) requirements." msgstr "Shows if the domain meets the Message Authentication, Reporting, and Conformance (DMARC) requirements." -#: src/domains/DomainsPage.js:192 +#: src/domains/DomainsPage.js:194 #: src/organizationDetails/OrganizationDomains.js:321 msgid "Shows if the domain meets the Sender Policy Framework (SPF) requirements." msgstr "Shows if the domain meets the Sender Policy Framework (SPF) requirements." -#: src/domains/DomainsPage.js:188 +#: src/domains/DomainsPage.js:190 #: src/organizationDetails/OrganizationDomains.js:317 msgid "Shows if the domain uses acceptable protocols." msgstr "Shows if the domain uses acceptable protocols." -#: src/domains/DomainsPage.js:189 +#: src/domains/DomainsPage.js:191 #: src/organizationDetails/OrganizationDomains.js:318 msgid "Shows if the domain uses only ciphers that are strong or acceptable." msgstr "Shows if the domain uses only ciphers that are strong or acceptable." -#: src/domains/DomainsPage.js:190 +#: src/domains/DomainsPage.js:192 #: src/organizationDetails/OrganizationDomains.js:319 msgid "Shows if the domain uses only curves that are strong or acceptable." msgstr "Shows if the domain uses only curves that are strong or acceptable." @@ -3605,22 +3618,22 @@ msgstr "Tag used to show domains that are not active." msgid "Tag used to show domains that are out of the organization's scope." msgstr "Tag used to show domains that are out of the organization's scope." -#: src/domains/DomainsPage.js:203 +#: src/domains/DomainsPage.js:205 #: src/organizationDetails/OrganizationDomains.js:343 msgid "Tag used to show domains that are possibly blocked by a firewall." msgstr "Tag used to show domains that are possibly blocked by a firewall." -#: src/domains/DomainsPage.js:208 +#: src/domains/DomainsPage.js:210 #: src/organizationDetails/OrganizationDomains.js:348 msgid "Tag used to show domains that have a pending web scan." msgstr "Tag used to show domains that have a pending web scan." -#: src/domains/DomainsPage.js:202 +#: src/domains/DomainsPage.js:204 #: src/organizationDetails/OrganizationDomains.js:342 msgid "Tag used to show domains that have an rcode status of NXDOMAIN" msgstr "Tag used to show domains that have an rcode status of NXDOMAIN" -#: src/domains/DomainsPage.js:206 +#: src/domains/DomainsPage.js:208 #: src/organizationDetails/OrganizationDomains.js:346 msgid "Tag used to show domains which may be from a wildcard subdomain (a wildcard resolver exists as a sibling)." msgstr "Tag used to show domains which may be from a wildcard subdomain (a wildcard resolver exists as a sibling)." @@ -3689,7 +3702,7 @@ msgid "The advice, guidance or services provided to you by TBS will be provided msgstr "The advice, guidance or services provided to you by TBS will be provided on an “as-is” basis, without warranty or representation of any kind, and TBS will not be liable for any loss, liability, damage or cost, including loss of data or interruptions of business arising from the provision of such advice, guidance or services by Tracker. Consequently, TBS recommends, that the users exercise their own skill and care with respect to their use of the advice, guidance and services that Tracker provides." #: src/dmarc/DmarcByDomainPage.js:272 -#: src/domains/DomainsPage.js:180 +#: src/domains/DomainsPage.js:182 #: src/organizationDetails/OrganizationDomains.js:309 msgid "The domain address." msgstr "The domain address." @@ -3714,15 +3727,15 @@ msgstr "The material available on this web site is subject to the" msgid "The page you are looking for has moved or does not exist." msgstr "The page you are looking for has moved or does not exist." -#: src/app/ReadGuidancePage.js:156 +#: src/app/ReadGuidancePage.js:146 msgid "The percentage of internet-facing services that have a DMARC policy of at least p=”none”" msgstr "The percentage of internet-facing services that have a DMARC policy of at least p=”none”" -#: src/app/ReadGuidancePage.js:153 +#: src/app/ReadGuidancePage.js:143 msgid "The percentage of web-hosting services that strongly enforce HTTPS" msgstr "The percentage of web-hosting services that strongly enforce HTTPS" -#: src/app/ReadGuidancePage.js:461 +#: src/app/ReadGuidancePage.js:451 msgid "The process of detecting DKIM selectors is not immediate. It may take more than 24 hours for the selectors to appear in Tracker after the conditions are met." msgstr "The process of detecting DKIM selectors is not immediate. It may take more than 24 hours for the selectors to appear in Tracker after the conditions are met." @@ -3738,7 +3751,7 @@ msgstr "The results of DKIM verification of the message. Can be pass, fail, neut msgid "The results of DKIM verification of the message. Can be pass, fail, neutral, temp-error, or perm-error." msgstr "The results of DKIM verification of the message. Can be pass, fail, neutral, temp-error, or perm-error." -#: src/app/ReadGuidancePage.js:149 +#: src/app/ReadGuidancePage.js:139 msgid "The summary cards show two metrics that Tracker scans:" msgstr "The summary cards show two metrics that Tracker scans:" @@ -3746,7 +3759,7 @@ msgstr "The summary cards show two metrics that Tracker scans:" msgid "The user's role has been successfully updated" msgstr "The user's role has been successfully updated" -#: src/app/ReadGuidancePage.js:164 +#: src/app/ReadGuidancePage.js:154 msgid "These metrics are an important first step in securing your services and should be treated as minimum requirements. Further metrics are available in your organization's domain list." msgstr "These metrics are an important first step in securing your services and should be treated as minimum requirements. Further metrics are available in your organization's domain list." @@ -3848,8 +3861,8 @@ msgid "To maximize your account's security, <0>please activate a multi-factor au msgstr "To maximize your account's security, <0>please activate a multi-factor authentication option." #: src/app/ReadGuidancePage.js:111 -msgid "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." -msgstr "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." +#~ msgid "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." +#~ msgstr "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." #: src/app/App.js:87 msgid "To view detailed scan results and other functionality, <0>please affiliate with an organization." @@ -3867,7 +3880,7 @@ msgstr "Total Messages" #~ msgstr "Total users" #: src/app/SlideMessage.js:51 -#: src/landing/LandingPage.js:24 +#: src/landing/LandingPage.js:25 msgid "Track Digital Security" msgstr "Track Digital Security" @@ -3884,7 +3897,7 @@ msgstr "Tracker HSTS and HTTPS results display incorrectly when a domain has a n msgid "Tracker account has been successfully closed." msgstr "Tracker account has been successfully closed." -#: src/app/ReadGuidancePage.js:454 +#: src/app/ReadGuidancePage.js:444 msgid "Tracker automatically adds DKIM selectors using DMARC reports. Selectors will be added to Tracker when 1) the domain has a DMARC RUA record which includes \"mailto:dmarc@cyber.gc.ca\"; and 2) the selector has been used to sign an email and passed DKIM validation." msgstr "Tracker automatically adds DKIM selectors using DMARC reports. Selectors will be added to Tracker when 1) the domain has a DMARC RUA record which includes \"mailto:dmarc@cyber.gc.ca\"; and 2) the selector has been used to sign an email and passed DKIM validation." @@ -3908,11 +3921,11 @@ msgstr "Tracker logo outline" msgid "Tracker logo text" msgstr "Tracker logo text" -#: src/app/ReadGuidancePage.js:171 +#: src/app/ReadGuidancePage.js:161 msgid "Tracker results refresh every 24 hours." msgstr "Tracker results refresh every 24 hours." -#: src/app/ReadGuidancePage.js:211 +#: src/app/ReadGuidancePage.js:201 msgid "Tracker:" msgstr "Tracker:" @@ -4071,7 +4084,7 @@ msgstr "Unable to update your phone number, please try again." msgid "Unable to verify your phone number, please try again." msgstr "Unable to verify your phone number, please try again." -#: src/app/ReadGuidancePage.js:144 +#: src/app/ReadGuidancePage.js:134 msgid "Understanding Scan Metrics:" msgstr "Understanding Scan Metrics:" @@ -4133,8 +4146,8 @@ msgid "User" msgstr "User" #: src/organizationDetails/OrganizationAffiliations.js:32 -msgid "User Affiliations" -msgstr "User Affiliations" +#~ msgid "User Affiliations" +#~ msgstr "User Affiliations" #: src/admin/SuperAdminUserList.js:392 #: src/user/UserPage.js:255 @@ -4142,11 +4155,11 @@ msgid "User Email" msgstr "User Email" #: src/admin/SuperAdminUserList.js:157 -#: src/admin/UserList.js:64 +#: src/admin/UserList.js:69 msgid "User List" msgstr "User List" -#: src/admin/UserList.js:148 +#: src/admin/UserList.js:153 msgid "User email" msgstr "User email" @@ -4232,7 +4245,7 @@ msgstr "Volume of messages spoofing domain (reject + quarantine + none):" msgid "WEB" msgstr "WEB" -#: src/domains/DomainsPage.js:205 +#: src/domains/DomainsPage.js:207 #: src/organizationDetails/OrganizationDomains.js:345 msgid "WILDCARD" msgstr "WILDCARD" @@ -4305,7 +4318,7 @@ msgstr "Web Guidance" msgid "Web Scan Results" msgstr "Web Scan Results" -#: src/app/ReadGuidancePage.js:227 +#: src/app/ReadGuidancePage.js:217 msgid "Web Security:" msgstr "Web Security:" @@ -4346,11 +4359,11 @@ msgstr "Welcome to your personal view of Tracker. Moderate the security posture msgid "Welcome, you are successfully signed in!" msgstr "Welcome, you are successfully signed in!" -#: src/app/ReadGuidancePage.js:406 +#: src/app/ReadGuidancePage.js:396 msgid "What does it mean if a domain is “unreachable”?" msgstr "What does it mean if a domain is “unreachable”?" -#: src/app/ReadGuidancePage.js:426 +#: src/app/ReadGuidancePage.js:416 msgid "Where can I get a GC-approved TLS certificate?" msgstr "Where can I get a GC-approved TLS certificate?" @@ -4358,11 +4371,11 @@ msgstr "Where can I get a GC-approved TLS certificate?" #~ msgid "Where necessary adjust IT Plans and budget estimates for the FY where work is expected." #~ msgstr "Where necessary adjust IT Plans and budget estimates for the FY where work is expected." -#: src/app/ReadGuidancePage.js:183 +#: src/app/ReadGuidancePage.js:173 msgid "Where necessary adjust IT Plans and budget estimates where work is expected." msgstr "Where necessary adjust IT Plans and budget estimates where work is expected." -#: src/app/ReadGuidancePage.js:362 +#: src/app/ReadGuidancePage.js:352 msgid "While other tools are useful to work alongside Tracker, they do not specifically adhere to the configuration requirements specified in the <0>Email Management Service Configuration Requirements and the <1>Web Site and Service Management Configuration Requirements. For a list of allowed protocols, ciphers, and curves review the <2>ITSP.40.062 TLS guidance." msgstr "While other tools are useful to work alongside Tracker, they do not specifically adhere to the configuration requirements specified in the <0>Email Management Service Configuration Requirements and the <1>Web Site and Service Management Configuration Requirements. For a list of allowed protocols, ciphers, and curves review the <2>ITSP.40.062 TLS guidance." @@ -4370,15 +4383,15 @@ msgstr "While other tools are useful to work alongside Tracker, they do not spec #~ msgid "Why do other tools (<0>Hardenize, <1>SSL Labs, etc.) show positive results for a domain while Tracker shows negative results?" #~ msgstr "Why do other tools (<0>Hardenize, <1>SSL Labs, etc.) show positive results for a domain while Tracker shows negative results?" -#: src/app/ReadGuidancePage.js:359 +#: src/app/ReadGuidancePage.js:349 msgid "Why do other tools show positive results for a domain while Tracker shows negative results?" msgstr "Why do other tools show positive results for a domain while Tracker shows negative results?" -#: src/app/ReadGuidancePage.js:451 +#: src/app/ReadGuidancePage.js:441 msgid "Why does the guidance page not show the domain’s DKIM selectors even though they exist?" msgstr "Why does the guidance page not show the domain’s DKIM selectors even though they exist?" -#: src/app/ReadGuidancePage.js:215 +#: src/app/ReadGuidancePage.js:205 msgid "Wiki" msgstr "Wiki" diff --git a/frontend/src/locales/fr.po b/frontend/src/locales/fr.po index f9c6f48e61..db716c5222 100644 --- a/frontend/src/locales/fr.po +++ b/frontend/src/locales/fr.po @@ -224,7 +224,7 @@ msgstr "Profil de l'administrateur" msgid "Admin accounts must activate a multi-factor authentication option." msgstr "Les comptes administrateurs doivent activer une option d'authentification multifactorielle." -#: src/app/ReadGuidancePage.js:342 +#: src/app/ReadGuidancePage.js:332 msgid "Admins of an organization can add domains to their list." msgstr "Les administrateurs d'une organisation peuvent ajouter des domaines à leur liste." @@ -261,7 +261,7 @@ msgstr "Une erreur s'est produite." msgid "An error occurred when fetching this organization's information" msgstr "Une erreur s'est produite lors de la recherche des informations relatives à cette organisation." -#: src/domains/DomainsPage.js:41 +#: src/domains/DomainsPage.js:43 msgid "An error occurred when you attempted to download all domain statuses." msgstr "Une erreur s'est produite lorsque vous avez tenté de télécharger tous les statuts de domaine." @@ -345,7 +345,7 @@ msgstr "Une erreur s'est produite lors de la mise à jour de votre numéro de t msgid "An error occurred." msgstr "Une erreur s'est produite." -#: src/app/ReadGuidancePage.js:420 +#: src/app/ReadGuidancePage.js:410 msgid "Another possibility is that your domain is not internet facing." msgstr "Il se peut aussi que votre domaine ne soit pas connecté à Internet." @@ -415,7 +415,7 @@ msgstr "Authentifier" msgid "BETA" msgstr "BETA" -#: src/domains/DomainsPage.js:203 +#: src/domains/DomainsPage.js:205 #: src/organizationDetails/OrganizationDomains.js:343 msgid "BLOCKED" msgstr "BLOQUÉ" @@ -456,7 +456,7 @@ msgstr "Bloqué" msgid "By accessing, browsing, or using our website or our services, you acknowledge that you have read, understood, and agree to be bound by these Terms and Conditions, and to comply with all applicable laws and regulations. We recommend that you review all Terms and Conditions periodically to understand any updates or changes that may affect you. If you do not agree to these Terms and Conditions, please refrain from using our website, products and services." msgstr "En accédant, en naviguant ou en utilisant notre site web ou nos services, vous reconnaissez avoir lu, compris et accepté d'être lié par les présentes conditions générales, et de vous conformer à toutes les lois et réglementations applicables. Nous vous recommandons de consulter périodiquement les Conditions générales afin de comprendre les mises à jour ou les modifications qui pourraient vous concerner. Si vous n'acceptez pas les présentes conditions générales, veuillez vous abstenir d'utiliser notre site Web, nos produits et nos services." -#: src/app/ReadGuidancePage.js:410 +#: src/app/ReadGuidancePage.js:400 msgid "By default our scanners check domains ending in “.gc.ca” and “.canada.ca”. If your domain is outside that set, you need to contact us to let us know. Send an email to <0>TBS Cyber Security to confirm your ownership of that domain." msgstr "Par défaut, nos scanners vérifient les domaines se terminant par \".gc.ca\" et \".canada.ca\". Si votre domaine ne fait pas partie de cette liste, vous devez nous contacter pour nous en informer. Envoyez un courriel à l’<0>équipe responsable de la cybersécurité du SCT pour confirmer que vous êtes propriétaire de ce domaine." @@ -469,10 +469,13 @@ msgstr "Par défaut, nos scanners vérifient les domaines se terminant par \".gc #~ msgstr "Vulnérabilité d'injection de CCS:" #: src/app/SlideMessage.js:55 -#: src/landing/LandingPage.js:28 msgid "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email and <1>web services. Track how government sites are becoming more secure." msgstr "Les Canadiens comptent sur le gouvernement du Canada pour fournir des services numériques sécurisés. La Politique sur les services et le numérique guide les services en ligne du gouvernement pour qu'ils adoptent de bonnes pratiques de sécurité pour les pratiques décrites dans les services de <0>courriel et les services <1>Web. Suivez l'évolution de la sécurisation des sites gouvernementaux." +#: src/landing/LandingPage.js:29 +msgid "Canadians rely on the Government of Canada to provide secure digital services. The Policy on Service and Digital guides government online services to adopt good security practices for practices outlined in the <0>email<1/> and <2>web<3/> services. Track how government sites are becoming more secure." +msgstr "Les Canadiens comptent sur le gouvernement du Canada pour fournir des services numériques sécurisés. La politique sur les services et le numérique guide les services en ligne du gouvernement pour qu'ils adoptent de bonnes pratiques de sécurité pour les services <0>email<1/> et <2>web<3/>. Suivez l'évolution de la sécurité des sites gouvernementaux." + #: src/admin/SuperAdminUserList.js:403 #: src/user/UserPage.js:260 msgid "Cancel" @@ -487,12 +490,12 @@ msgid "Certificate chain info could not be found during the scan." msgstr "Les informations sur la chaîne de certificats n'ont pas pu être trouvées pendant l'analyse." #: src/domains/DomainCard.js:193 -#: src/domains/DomainsPage.js:187 +#: src/domains/DomainsPage.js:189 #: src/organizationDetails/OrganizationDomains.js:316 msgid "Certificates" msgstr "Certificats" -#: src/domains/DomainsPage.js:79 +#: src/domains/DomainsPage.js:81 #: src/organizationDetails/OrganizationDomains.js:97 msgid "Certificates Status" msgstr "Statut des certificats" @@ -543,13 +546,13 @@ msgid "Check your associated Tracker email for the verification link" msgstr "Vérifiez le lien de vérification dans votre courriel de suivi associé." #: src/domains/DomainCard.js:195 -#: src/domains/DomainsPage.js:189 +#: src/domains/DomainsPage.js:191 #: src/guidance/WebTLSResults.js:106 #: src/organizationDetails/OrganizationDomains.js:318 msgid "Ciphers" msgstr "Ciphers" -#: src/domains/DomainsPage.js:80 +#: src/domains/DomainsPage.js:82 #: src/organizationDetails/OrganizationDomains.js:98 msgid "Ciphers Status" msgstr "État du chiffrement" @@ -654,7 +657,7 @@ msgstr "Confirmer la découverte du sous-domaine pour <0>{domainUrl} :" msgid "Connection Results" msgstr "Résultats de la connexion" -#: src/app/ReadGuidancePage.js:180 +#: src/app/ReadGuidancePage.js:170 msgid "Consider prioritizing websites and web services that exchange Protected data." msgstr "Envisagez de donner la priorité aux sites web et aux services web qui échangent des données protégées." @@ -748,19 +751,19 @@ msgstr "Mot de passe actuel:" #~ msgstr "Numéro de téléphone actuel:" #: src/domains/DomainCard.js:196 -#: src/domains/DomainsPage.js:190 +#: src/domains/DomainsPage.js:192 #: src/guidance/WebTLSResults.js:156 #: src/organizationDetails/OrganizationDomains.js:319 #: src/organizationDetails/OrganizationDomains.js:377 msgid "Curves" msgstr "Courbes" -#: src/domains/DomainsPage.js:81 +#: src/domains/DomainsPage.js:83 #: src/organizationDetails/OrganizationDomains.js:99 msgid "Curves Status" msgstr "État des courbes" -#: src/domains/DomainsPage.js:194 +#: src/domains/DomainsPage.js:196 #: src/organizationDetails/OrganizationDomains.js:323 msgid "DKIM" msgstr "DKIM" @@ -799,7 +802,7 @@ msgstr "Sélecteurs DKIM" msgid "DKIM Selectors:" msgstr "Sélecteurs DKIM:" -#: src/domains/DomainsPage.js:84 +#: src/domains/DomainsPage.js:86 #: src/organizationDetails/OrganizationDomains.js:102 msgid "DKIM Status" msgstr "Statut DKIM" @@ -816,7 +819,7 @@ msgstr "L'enregistrement DKIM et les clés sont déployés et valides" #~ msgid "DKIM record could not be found for this selector." #~ msgstr "Un enregistrement DKIM n'a pas pu être trouvé pour ce sélecteur." -#: src/domains/DomainsPage.js:198 +#: src/domains/DomainsPage.js:200 #: src/organizationDetails/OrganizationDomains.js:327 msgid "DMARC" msgstr "DMARC" @@ -863,7 +866,7 @@ msgstr "Rapport DMARC " msgid "DMARC Report for {domainSlug}" msgstr "Rapport DMARC pour {domainSlug}" -#: src/domains/DomainsPage.js:85 +#: src/domains/DomainsPage.js:87 #: src/organizationDetails/OrganizationDomains.js:103 msgid "DMARC Status" msgstr "Statut DMARC" @@ -971,7 +974,7 @@ msgstr "Les détails d'une balise d'orientation donnée peuvent être trouvés s #~ msgid "Develop a prioritized schedule to address any failings. Consider prioritizing websites and web services that exchange Protected data." #~ msgstr "Élaborer un calendrier de priorités pour corriger tout échec. Envisager de donner la priorité aux sites Web et aux services Web qui échangent des données protégées." -#: src/app/ReadGuidancePage.js:177 +#: src/app/ReadGuidancePage.js:167 msgid "Develop a prioritized schedule to address any failings:" msgstr "Élaborer un calendrier de mesures prioritaires pour remédier à toute défaillance :" @@ -1004,8 +1007,8 @@ msgstr "Disposition" #: src/admin/AuditLogTable.js:67 #: src/dmarc/DmarcByDomainPage.js:106 #: src/dmarc/DmarcByDomainPage.js:272 -#: src/domains/DomainsPage.js:76 -#: src/domains/DomainsPage.js:180 +#: src/domains/DomainsPage.js:78 +#: src/domains/DomainsPage.js:182 #: src/organizationDetails/OrganizationDomains.js:309 #: src/organizationDetails/OrganizationDomains.js:364 msgid "Domain" @@ -1015,7 +1018,7 @@ msgstr "Domaine" msgid "Domain List" msgstr "Liste des domaines" -#: src/app/ReadGuidancePage.js:481 +#: src/app/ReadGuidancePage.js:471 msgid "Domain Name System (DNS) Services Management Configuration Requirements - Canada.ca" msgstr "Exigences de configuration pour la gestion des sites Web et des services" @@ -1065,8 +1068,8 @@ msgstr "Domaine:" #: src/app/App.js:136 #: src/app/App.js:247 #: src/app/FloatingMenu.js:116 -#: src/domains/DomainsPage.js:90 -#: src/domains/DomainsPage.js:140 +#: src/domains/DomainsPage.js:92 +#: src/domains/DomainsPage.js:142 #: src/organizationDetails/OrganizationDetails.js:132 #: src/organizationDetails/OrganizationDomains.js:124 #: src/summaries/Doughnut.js:49 @@ -1075,7 +1078,7 @@ msgstr "Domaine:" msgid "Domains" msgstr "Domaines" -#: src/app/ReadGuidancePage.js:121 +#: src/app/ReadGuidancePage.js:111 msgid "Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." msgstr "Les domaines ne peuvent être supprimés de votre liste que 1) s'ils n'existent plus, c'est-à-dire s'ils sont supprimés du DNS et renvoient un code d'erreur NX DOMAIN (le nom de domaine n'existe pas) ; ou 2) si vous avez constaté qu'ils n'appartiennent pas à votre organisation." @@ -1134,6 +1137,7 @@ msgstr "Modifier l'utilisateur" #: src/admin/SuperAdminUserList.js:148 #: src/components/fields/EmailField.js:15 #: src/domains/DomainCard.js:201 +#: src/organizationDetails/OrganizationAffiliations.js:45 #: src/user/EditableUserTFAMethod.js:166 msgid "Email" msgstr "Courriel" @@ -1143,7 +1147,7 @@ msgstr "Courriel" msgid "Email Guidance" msgstr "Conseils par courriel" -#: src/app/ReadGuidancePage.js:493 +#: src/app/ReadGuidancePage.js:483 msgid "Email Management Services Configuration Requirements - Canada.ca" msgstr "Exigences en matière de configuration des services de gestion des courriels" @@ -1151,7 +1155,7 @@ msgstr "Exigences en matière de configuration des services de gestion des courr msgid "Email Scan Results" msgstr "Résultats de l'analyse des courriels" -#: src/app/ReadGuidancePage.js:270 +#: src/app/ReadGuidancePage.js:260 msgid "Email Security:" msgstr "Sécurité du courrier électronique :" @@ -1362,7 +1366,7 @@ msgstr "Filtres :" #~ msgid "For any questions or concerns related to the ITPIN and related implementation guidance, contact TBS Cybersecurity." #~ msgstr "Si vous avez des questions ou des préoccupations, n’hésitez pas à communiquer avec l’équipe responsable de la cybersécurité du SCT." -#: src/app/ReadGuidancePage.js:526 +#: src/app/ReadGuidancePage.js:516 msgid "For any questions or concerns, please contact <0>TBS Cyber Security ." msgstr "Si vous avez des questions ou des préoccupations, n’hésitez pas à communiquer avec l’<0>équipe responsable de la cybersécurité du SCT." @@ -1403,7 +1407,7 @@ msgstr "Oublié votre mot de passe?" msgid "French" msgstr "Français" -#: src/app/ReadGuidancePage.js:317 +#: src/app/ReadGuidancePage.js:307 msgid "Frequently Asked Questions" msgstr "Foire aux questions" @@ -1447,7 +1451,7 @@ msgstr "Pour commencer" msgid "Getting an Account:" msgstr "Ouverture d'un compte :" -#: src/domains/DomainsPage.js:151 +#: src/domains/DomainsPage.js:153 msgid "Getting domain statuses" msgstr "Obtenir les statuts des domaines" @@ -1497,7 +1501,7 @@ msgid "HIDDEN" msgstr "CACHÉ" #: src/domains/DomainCard.js:192 -#: src/domains/DomainsPage.js:186 +#: src/domains/DomainsPage.js:188 #: src/organizationDetails/OrganizationDomains.js:315 msgid "HSTS" msgstr "HSTS" @@ -1522,7 +1526,7 @@ msgstr "HSTS analysé" msgid "HSTS Preloaded" msgstr "HSTS préchargé" -#: src/domains/DomainsPage.js:78 +#: src/domains/DomainsPage.js:80 #: src/organizationDetails/OrganizationDomains.js:96 msgid "HSTS Status" msgstr "Statut HSTS" @@ -1544,7 +1548,7 @@ msgid "HTTP Upgrades" msgstr "Mises à jour HTTP" #: src/domains/DomainCard.js:191 -#: src/domains/DomainsPage.js:183 +#: src/domains/DomainsPage.js:185 #: src/organizationDetails/OrganizationDomains.js:312 msgid "HTTPS" msgstr "HTTPS" @@ -1574,7 +1578,7 @@ msgstr "HTTPS Live" msgid "HTTPS Scan Complete" msgstr "Scan HTTPS terminé" -#: src/domains/DomainsPage.js:77 +#: src/domains/DomainsPage.js:79 #: src/organizationDetails/OrganizationDomains.js:95 msgid "HTTPS Status" msgstr "Statut HTTPS" @@ -1650,7 +1654,7 @@ msgstr "Le nom d'hôte correspond : {0}" #~ msgid "Hostname Validated" #~ msgstr "Nom d'hôte validé" -#: src/app/ReadGuidancePage.js:339 +#: src/app/ReadGuidancePage.js:329 msgid "How can I edit my domain list?" msgstr "Comment puis-je modifier ma liste de domaines?" @@ -1701,7 +1705,7 @@ msgstr "Identifiez les utilisateurs affiliés à Suivi au sein de votre organisa #~ msgid "Identify resources required to act as central point(s) of contact with Treasury Board of Canada Secretariat (TBS). Share the contact list with <0>TBS Cyber Security, as required." #~ msgstr "Déterminer les ressources nécessaires qui agiront en tant que point de contact central auprès du Secrétariat du Conseil du Trésor du Canada (SCT). Communiquer la liste de personnes-ressources à l’<0>équipe responsable de la cybersécurité du SCT et la mettre à jour, au besoin." -#: src/app/ReadGuidancePage.js:130 +#: src/app/ReadGuidancePage.js:120 msgid "If a domain is no longer in use but still exists on the DNS, it is still vulnerable to email spoofing attacks, where an attacker can send an email that appears to be coming from your domain." msgstr "Si un domaine n'est plus utilisé mais existe toujours dans le DNS, il reste vulnérable aux attaques par usurpation d'adresse électronique, c'est-à-dire qu'un pirate peut envoyer un courrier électronique semblant provenir de votre domaine." @@ -1742,7 +1746,7 @@ msgstr "Immédiatement" #~ msgid "Implementation" #~ msgstr "Mise en œuvre" -#: src/app/ReadGuidancePage.js:505 +#: src/app/ReadGuidancePage.js:495 msgid "Implementation guidance: email domain protection (ITSP.40.065 v1.1) - Canadian Centre for Cyber Security" msgstr "Directives de mise en œuvre – protection du domaine de courrier (ITSP.40.065 v1.1) – Centre canadien pour la cybersécurité" @@ -1750,11 +1754,11 @@ msgstr "Directives de mise en œuvre – protection du domaine de courrier (ITSP #~ msgid "Implementation:" #~ msgstr "Mise en œuvre:" -#: src/app/ReadGuidancePage.js:250 +#: src/app/ReadGuidancePage.js:240 msgid "Implementation: <0>Guidance on securely configuring network protocols (ITSP.40.062)" msgstr "Mise en œuvre : <0>Conseils sur la configuration sécurisée des protocoles réseau (ITSP.40.062)" -#: src/app/ReadGuidancePage.js:293 +#: src/app/ReadGuidancePage.js:283 msgid "Implementation: <0>Implementation guidance: email domain protection (ITSP.40.065 v1.1)" msgstr "Mise en œuvre : <0>Conseils de mise en œuvre : protection du domaine de messagerie (ITSP.40.065 v1.1)" @@ -1970,7 +1974,7 @@ msgstr "Courriel non valide" msgid "Invite Requested" msgstr "Invitation demandée" -#: src/admin/UserList.js:154 +#: src/admin/UserList.js:159 msgid "Invite User" msgstr "Inviter l'utilisateur" @@ -1986,7 +1990,7 @@ msgstr "Est aligné sur le SPF. Peut être vrai ou faux." msgid "Issuer:" msgstr "Émetteur :" -#: src/app/ReadGuidancePage.js:324 +#: src/app/ReadGuidancePage.js:314 msgid "It is not clear to me why a domain has failed?" msgstr "Je ne comprends pas pourquoi un domaine a échoué." @@ -1994,7 +1998,7 @@ msgstr "Je ne comprends pas pourquoi un domaine a échoué." #~ msgid "It is recommended that SSC partners contact their SSC Service Delivery Manager to discuss the departmental action plan and required steps to submit a request for change." #~ msgstr "Il est recommandé aux partenaires du SSC de contacter leur gestionnaire de prestation de services du SSC afin de discuter du plan d'action ministériel et des étapes nécessaires pour soumettre une demande de changement." -#: src/app/ReadGuidancePage.js:186 +#: src/app/ReadGuidancePage.js:176 msgid "It is recommended that Shared Service Canada (SSC) partners contact their SSC Service Delivery Manager to discuss action plans and required steps to submit a request for change." msgstr "On recommande aux partenaires de Services partagés Canada (SPC) de communiquer avec leur gestionnaire de prestation de services de SPC pour discuter des plans d’action et des étapes requises afin de soumettre une demande de changement." @@ -2072,11 +2076,11 @@ msgstr "Nous allons vous configurer pour que vous puissiez vérifier les informa msgid "Limitation of Liability" msgstr "Limitation de la responsabilité" -#: src/app/ReadGuidancePage.js:207 +#: src/app/ReadGuidancePage.js:197 msgid "Links to Review:" msgstr "Liens à revoir :" -#: src/app/ReadGuidancePage.js:220 +#: src/app/ReadGuidancePage.js:210 msgid "List of guidance tags" msgstr "Liste des balises d'orientation" @@ -2145,7 +2149,7 @@ msgstr "Surveiller les rapports DMARC." msgid "More details" msgstr "Plus de détails" -#: src/app/ReadGuidancePage.js:513 +#: src/app/ReadGuidancePage.js:503 msgid "Mozilla SSL Configuration Generator" msgstr "Générateur de configuration SSL de Mozilla" @@ -2163,12 +2167,13 @@ msgstr "Agrafe obligatoire" msgid "NEW" msgstr "NOUVEAU" -#: src/domains/DomainsPage.js:202 +#: src/domains/DomainsPage.js:204 msgid "NXDOMAIN" msgstr "NXDOMAIN" #: src/createOrganization/CreateOrganizationPage.js:173 #: src/createOrganization/CreateOrganizationPage.js:178 +#: src/organizationDetails/OrganizationAffiliations.js:46 #: src/organizations/Organizations.js:61 msgid "Name" msgstr "Nom" @@ -2281,7 +2286,7 @@ msgstr "Non" #~ msgstr "Aucune information sur la phase DMARC n'est disponible pour cette organisation." #: src/admin/AdminDomains.js:256 -#: src/domains/DomainsPage.js:97 +#: src/domains/DomainsPage.js:99 #: src/organizationDetails/OrganizationDomains.js:249 msgid "No Domains" msgstr "Aucun domaine" @@ -2294,7 +2299,7 @@ msgstr "Aucun domaine" msgid "No Organizations" msgstr "Aucune organisation" -#: src/organizationDetails/OrganizationAffiliations.js:43 +#: src/organizationDetails/OrganizationAffiliations.js:59 msgid "No Users" msgstr "Pas d'utilisateurs" @@ -2326,12 +2331,12 @@ msgstr "Pas de données pour le tableau Entièrement aligné par adresse IP" msgid "No data for the SPF Failures by IP Address table" msgstr "Aucune donnée pour le tableau des défaillances du SPF par adresse IP" -#: src/domains/DomainsPage.js:161 -#: src/domains/DomainsPage.js:169 +#: src/domains/DomainsPage.js:163 +#: src/domains/DomainsPage.js:171 msgid "No data found" msgstr "Aucune donnée trouvée" -#: src/domains/DomainsPage.js:162 +#: src/domains/DomainsPage.js:164 msgid "No data found when retrieving all domain statuses." msgstr "Aucune donnée n'a été trouvée lors de la récupération de tous les statuts de domaine." @@ -2360,7 +2365,7 @@ msgid "No scan data is currently available for this service. You may request a s msgstr "Aucune donnée de balayage n'est actuellement disponible pour ce service. Vous pouvez demander un scan en utilisant le bouton d'actualisation, ou attendre jusqu'à 24 heures pour que les données soient actualisées." #: src/admin/SuperAdminUserList.js:161 -#: src/admin/UserList.js:68 +#: src/admin/UserList.js:73 msgid "No users" msgstr "Aucun utilisateur" @@ -2435,7 +2440,7 @@ msgstr "PROPRIÉTAIRE" #~ msgid "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC Public Facing Web Services" #~ msgstr "Obtenez des certificats auprès d'une source de certificats approuvée par le GC, comme indiqué dans les Recommandations relatives aux certificats de serveur TLS pour les services Web publics du GC." -#: src/app/ReadGuidancePage.js:192 +#: src/app/ReadGuidancePage.js:182 msgid "Obtain certificates from a GC-approved certificate source as outlined in the Recommendations for TLS Server Certificates for GC public facing web services" msgstr "Obtenir des certificats d’une source de certificats approuvée par le GC, comme l’indiquent les Recommandations pour les certificats de serveur TLS pour les services Web publics du GC." @@ -2443,7 +2448,7 @@ msgstr "Obtenir des certificats d’une source de certificats approuvée par le #~ msgid "Obtain the configuration guidance for the appropriate endpoints (e.g. web server, network/security appliances, etc.) and implement recommended configurations to support HTTPS." #~ msgstr "Obtenez les conseils de configuration pour les points d'extrémité appropriés (par exemple, serveur Web, appareils de réseau/sécurité, etc.) et mettez en œuvre les configurations recommandées pour prendre en charge HTTPS." -#: src/app/ReadGuidancePage.js:198 +#: src/app/ReadGuidancePage.js:188 msgid "Obtain the configuration guidance for the appropriate endpoints (e.g., web server, network/security appliances, etc.) and implement recommended configurations." msgstr "Obtenir une orientation en matière de configuration pour les points terminaux appropriés (p. ex., serveur Web, dispositifs de réseau ou de sécurité) et mettre en œuvre les configurations recommandées." @@ -2460,11 +2465,11 @@ msgstr "Ancienne valeur :" msgid "Once access is given to your department by the TBS Cyber team, they will be able to invite and manage other users within the organization and manage the domain list." msgstr "Une fois que l’équipe responsable de la cybersécurité du SCT a donné l'accès à votre département, celui-ci pourra inviter et gérer d'autres utilisateurs au sein de l'organisation et gérer la liste du domaine." -#: src/app/ReadGuidancePage.js:345 +#: src/app/ReadGuidancePage.js:335 msgid "Only <0>TBS Cyber Security can remove domains from your organization. Domains are only to be removed from your list when 1) they no longer exist, meaning they are deleted from the DNS returning an error code of NX DOMAIN (domain name does not exist); or 2) if you have identified that they do not belong to your organization." msgstr "Seul l’<0>équipe responsable de la cybersécurité du SCT peut supprimer des domaines de votre organisation. Les domaines ne peuvent être supprimés de votre liste que 1) s'ils n'existent plus, c'est-à-dire s'ils sont supprimés du DNS et renvoient un code d'erreur NX DOMAIN (le nom de domaine n'existe pas) ; ou 2) si vous avez constaté qu'ils n'appartiennent pas à votre organisation." -#: src/app/ReadGuidancePage.js:429 +#: src/app/ReadGuidancePage.js:419 msgid "Options include contacting the <0>SSC WebSSL services team and/or using <1>Let's Encrypt. For more information, please refer to the guidance on <2>Recommendations for TLS Server Certificates." msgstr "Vous pouvez notamment communiquer avec l’<0>équipe responsable des services WebSSL de SPC ou utiliser <1>Let’sEncrypt. Pour en apprendre davantage, veuillez vous reporter aux <2>Recommandations pour les certificats de serveur TLS." @@ -2658,7 +2663,7 @@ msgstr "Veuillez prévoir jusqu'à 24 heures pour que les résumés reflètent l msgid "Please choose your preferred language" msgstr "Veuillez choisir votre langue préférée" -#: src/app/ReadGuidancePage.js:327 +#: src/app/ReadGuidancePage.js:317 msgid "Please contact <0>TBS Cyber Security for help." msgstr "Veuillez communiquer avec l’<0>équipe responsable de la cybersécurité du SCT pour obtenir de l’aide." @@ -2745,19 +2750,19 @@ msgstr "Déclaration de confidentialité" msgid "Prod" msgstr "Prod" -#: src/app/ReadGuidancePage.js:518 +#: src/app/ReadGuidancePage.js:508 msgid "Protect domains that do not send email - GOV.UK (www.gov.uk)" msgstr "Protéger les domaines qui n'envoient pas de courrier électronique - GOV.UK (www.gov.uk)" #: src/domains/DomainCard.js:194 -#: src/domains/DomainsPage.js:188 +#: src/domains/DomainsPage.js:190 #: src/guidance/WebTLSResults.js:53 #: src/organizationDetails/OrganizationDomains.js:317 #: src/organizationDetails/OrganizationDomains.js:378 msgid "Protocols" msgstr "Protocoles" -#: src/domains/DomainsPage.js:82 +#: src/domains/DomainsPage.js:84 #: src/organizationDetails/OrganizationDomains.js:100 msgid "Protocols Status" msgstr "Statut des protocoles" @@ -2819,7 +2824,7 @@ msgstr "La chaîne reçue a un ordre valide" msgid "Record:" msgstr "Record :" -#: src/app/ReadGuidancePage.js:470 +#: src/app/ReadGuidancePage.js:460 msgid "References:" msgstr "Références :" @@ -2873,7 +2878,7 @@ msgstr "Demande d'invitation" msgid "Request a domain to be scanned:" msgstr "Demander qu'un domaine soit scanné:" -#: src/domains/DomainsPage.js:152 +#: src/domains/DomainsPage.js:154 msgid "Request successfully sent to get all domain statuses - this may take a minute." msgstr "La requête a été envoyée avec succès pour obtenir les statuts de tous les domaines - cela peut prendre une minute." @@ -2889,11 +2894,11 @@ msgstr "Analyse du sous-domaine demandé" #~ msgid "Requests for updates can be sent directly to <0>TBS Cyber Security." #~ msgstr "Les demandes de mise à jour peuvent être envoyées directement à l’<0>équipe responsable de la cybersécurité du SCT." -#: src/app/ReadGuidancePage.js:275 +#: src/app/ReadGuidancePage.js:265 msgid "Requirements: <0>Email Management Services Configuration Requirements" msgstr "Exigences : <0>Configuration requise pour les services de gestion du courrier électronique" -#: src/app/ReadGuidancePage.js:232 +#: src/app/ReadGuidancePage.js:222 msgid "Requirements: <0>Web Sites and Services Management Configuration Requirements" msgstr "Exigences : <0>Exigences de configuration de la gestion des sites et services web" @@ -2940,6 +2945,10 @@ msgstr "Résultats pour les analyses des technologies web (TLS, HTTPS)." msgid "Revoked:" msgstr "Révoqué :" +#: src/organizationDetails/OrganizationAffiliations.js:47 +msgid "Role" +msgstr "Rôle" + #: src/admin/UserListModal.js:106 msgid "Role updated" msgstr "Rôle mis à jour" @@ -2957,12 +2966,12 @@ msgstr "Effectuer la rotation des clés DKIM annuellement." msgid "SAN List:" msgstr "Liste des SAN :" -#: src/domains/DomainsPage.js:208 +#: src/domains/DomainsPage.js:210 #: src/organizationDetails/OrganizationDomains.js:348 msgid "SCAN PENDING" msgstr "SCAN EN ATTENTE" -#: src/domains/DomainsPage.js:192 +#: src/domains/DomainsPage.js:194 #: src/organizationDetails/OrganizationDomains.js:321 msgid "SPF" msgstr "SPF" @@ -2989,7 +2998,7 @@ msgstr "Défaillances du SPF par adresse IP" msgid "SPF Results" msgstr "Résultats du SPF" -#: src/domains/DomainsPage.js:83 +#: src/domains/DomainsPage.js:85 #: src/organizationDetails/OrganizationDomains.js:101 msgid "SPF Status" msgstr "Statut SPF" @@ -3087,7 +3096,7 @@ msgstr "Recherche par initié par, nom de la ressource" #: src/dmarc/DmarcByDomainPage.js:195 #: src/dmarc/DmarcByDomainPage.js:245 -#: src/domains/DomainsPage.js:226 +#: src/domains/DomainsPage.js:228 #: src/organizationDetails/OrganizationDomains.js:365 msgid "Search for a domain" msgstr "Rechercher un domaine" @@ -3096,6 +3105,10 @@ msgstr "Rechercher un domaine" msgid "Search for a user (email)" msgstr "Recherche d'un utilisateur (email)" +#: src/organizationDetails/OrganizationAffiliations.js:90 +msgid "Search for a user by email" +msgstr "Recherche d'un utilisateur par courriel" + #: src/admin/AuditLogTable.js:188 #~ msgid "Search for an activity" #~ msgstr "Recherche d'une activité" @@ -3105,7 +3118,7 @@ msgid "Search for an organization" msgstr "Rechercher une organisation" #: src/admin/AdminDomains.js:349 -#: src/admin/UserList.js:139 +#: src/admin/UserList.js:144 #: src/components/ReactTableGlobalFilter.js:36 #: src/components/SearchBox.js:44 msgid "Search:" @@ -3223,7 +3236,7 @@ msgstr "Indique si le point de terminaison HTTPS passe en HTTP non sécurisé im msgid "Shows if the certificate bundle provided from the server included the root certificate." msgstr "Indique si le paquet de certificats fourni par le serveur comprend le certificat racine." -#: src/domains/DomainsPage.js:187 +#: src/domains/DomainsPage.js:189 #: src/organizationDetails/OrganizationDomains.js:316 msgid "Shows if the domain has a valid SSL certificate." msgstr "Indique si le domaine dispose d'un certificat SSL valide." @@ -3243,17 +3256,17 @@ msgstr "Indique si le domaine dispose d'un certificat SSL valide." #~ msgid "Shows if the domain is policy compliant." #~ msgstr "Indique si le domaine est conforme à la politique." -#: src/domains/DomainsPage.js:195 +#: src/domains/DomainsPage.js:197 #: src/organizationDetails/OrganizationDomains.js:324 msgid "Shows if the domain meets the DomainKeys Identified Mail (DKIM) requirements." msgstr "Indique si le domaine répond aux exigences de DomainKeys Identified Mail (DKIM)." -#: src/domains/DomainsPage.js:186 +#: src/domains/DomainsPage.js:188 #: src/organizationDetails/OrganizationDomains.js:315 msgid "Shows if the domain meets the HSTS requirements." msgstr "Indique si le domaine répond aux exigences du HSTS." -#: src/domains/DomainsPage.js:184 +#: src/domains/DomainsPage.js:186 #: src/organizationDetails/OrganizationDomains.js:313 msgid "Shows if the domain meets the Hypertext Transfer Protocol Secure (HTTPS) requirements." msgstr "Indique si le domaine répond aux exigences du protocole de transfert hypertexte sécurisé (HTTPS)." @@ -3264,27 +3277,27 @@ msgstr "Indique si le domaine répond aux exigences du protocole de transfert hy #~ msgid "Shows if the domain meets the Hypertext Transfer ol Secure (HTTPS) requirements." #~ msgstr "Indique si le domaine répond aux exigences de Hypertext Transfer ol Secure (HTTPS)." -#: src/domains/DomainsPage.js:199 +#: src/domains/DomainsPage.js:201 #: src/organizationDetails/OrganizationDomains.js:328 msgid "Shows if the domain meets the Message Authentication, Reporting, and Conformance (DMARC) requirements." msgstr "Indique si le domaine répond aux exigences de Message Authentication, Reporting, and Conformance (DMARC)." -#: src/domains/DomainsPage.js:192 +#: src/domains/DomainsPage.js:194 #: src/organizationDetails/OrganizationDomains.js:321 msgid "Shows if the domain meets the Sender Policy Framework (SPF) requirements." msgstr "Indique si le domaine répond aux exigences du Sender Policy Framework (SPF)." -#: src/domains/DomainsPage.js:188 +#: src/domains/DomainsPage.js:190 #: src/organizationDetails/OrganizationDomains.js:317 msgid "Shows if the domain uses acceptable protocols." msgstr "Indique si le domaine utilise des protocoles acceptables." -#: src/domains/DomainsPage.js:189 +#: src/domains/DomainsPage.js:191 #: src/organizationDetails/OrganizationDomains.js:318 msgid "Shows if the domain uses only ciphers that are strong or acceptable." msgstr "Indique si le domaine utilise uniquement des ciphers forts ou acceptables." -#: src/domains/DomainsPage.js:190 +#: src/domains/DomainsPage.js:192 #: src/organizationDetails/OrganizationDomains.js:319 msgid "Shows if the domain uses only curves that are strong or acceptable." msgstr "Indique si le domaine utilise uniquement des courbes fortes ou acceptables" @@ -3563,22 +3576,22 @@ msgstr "Balise utilisée pour afficher les domaines qui ne sont pas actifs." msgid "Tag used to show domains that are out of the organization's scope." msgstr "Balise utilisée pour indiquer les domaines qui sont hors de la portée de l'organisation." -#: src/domains/DomainsPage.js:203 +#: src/domains/DomainsPage.js:205 #: src/organizationDetails/OrganizationDomains.js:343 msgid "Tag used to show domains that are possibly blocked by a firewall." msgstr "Balise utilisée pour afficher les domaines susceptibles d'être bloqués par un pare-feu." -#: src/domains/DomainsPage.js:208 +#: src/domains/DomainsPage.js:210 #: src/organizationDetails/OrganizationDomains.js:348 msgid "Tag used to show domains that have a pending web scan." msgstr "Balise utilisée pour afficher les domaines dont l'analyse web est en cours." -#: src/domains/DomainsPage.js:202 +#: src/domains/DomainsPage.js:204 #: src/organizationDetails/OrganizationDomains.js:342 msgid "Tag used to show domains that have an rcode status of NXDOMAIN" msgstr "Balise utilisée pour afficher les domaines dont le code rcode est NXDOMAIN" -#: src/domains/DomainsPage.js:206 +#: src/domains/DomainsPage.js:208 #: src/organizationDetails/OrganizationDomains.js:346 msgid "Tag used to show domains which may be from a wildcard subdomain (a wildcard resolver exists as a sibling)." msgstr "Balise utilisée pour afficher les domaines qui peuvent provenir d'un sous-domaine générique (un résolveur générique existe en tant que frère ou sœur)." @@ -3647,7 +3660,7 @@ msgid "The advice, guidance or services provided to you by TBS will be provided msgstr "Les avis, conseils ou services qui vous sont fournis par TBS le sont “en l'état“, sans garantie ni déclaration d'aucune sorte, et TBS n'est pas responsable des pertes, responsabilités, dommages ou coûts, y compris les pertes de données ou les interruptions d'activité résultant de la fourniture de tels avis, conseils ou services par Tracker. Par conséquent, TBS recommande aux utilisateurs d'utiliser les conseils, les orientations et les services fournis par Tracker en faisant preuve de compétence et de prudence." #: src/dmarc/DmarcByDomainPage.js:272 -#: src/domains/DomainsPage.js:180 +#: src/domains/DomainsPage.js:182 #: src/organizationDetails/OrganizationDomains.js:309 msgid "The domain address." msgstr "L'adresse du domaine." @@ -3672,15 +3685,15 @@ msgstr "Le matériel disponible sur ce site web est soumis à l'approbation de l msgid "The page you are looking for has moved or does not exist." msgstr "La page que vous recherchez a été déplacée ou n'existe pas." -#: src/app/ReadGuidancePage.js:156 +#: src/app/ReadGuidancePage.js:146 msgid "The percentage of internet-facing services that have a DMARC policy of at least p=”none”" msgstr "Le pourcentage de services en contact avec l'internet qui ont une politique DMARC d'au moins p=”none”." -#: src/app/ReadGuidancePage.js:153 +#: src/app/ReadGuidancePage.js:143 msgid "The percentage of web-hosting services that strongly enforce HTTPS" msgstr "Le pourcentage de services d'hébergement web qui appliquent fortement le protocole HTTPS" -#: src/app/ReadGuidancePage.js:461 +#: src/app/ReadGuidancePage.js:451 msgid "The process of detecting DKIM selectors is not immediate. It may take more than 24 hours for the selectors to appear in Tracker after the conditions are met." msgstr "Le processus de détection des sélecteurs DKIM n'est pas immédiat. Il peut s'écouler plus de 24 heures avant que les sélecteurs n'apparaissent dans Tracker lorsque les conditions sont remplies." @@ -3696,7 +3709,7 @@ msgstr "Résultats de la vérification DKIM du message. Il peut s'agir d'un succ msgid "The results of DKIM verification of the message. Can be pass, fail, neutral, temp-error, or perm-error." msgstr "Résultats de la vérification DKIM du message. Il peut s'agir d'un succès, d'un échec, d'un résultat neutre, d'une erreur temporaire ou d'une erreur permanente." -#: src/app/ReadGuidancePage.js:149 +#: src/app/ReadGuidancePage.js:139 msgid "The summary cards show two metrics that Tracker scans:" msgstr "Les cartes récapitulatives présentent deux mesures que Suivi analyse :" @@ -3704,7 +3717,7 @@ msgstr "Les cartes récapitulatives présentent deux mesures que Suivi analyse : msgid "The user's role has been successfully updated" msgstr "Le rôle de l'utilisateur a été mis à jour avec succès" -#: src/app/ReadGuidancePage.js:164 +#: src/app/ReadGuidancePage.js:154 msgid "These metrics are an important first step in securing your services and should be treated as minimum requirements. Further metrics are available in your organization's domain list." msgstr "Ces paramètres constituent une première étape importante dans la sécurisation de vos services et doivent être considérés comme des exigences minimales. D'autres paramètres sont disponibles dans la liste des domaines de votre organisation." @@ -3790,8 +3803,8 @@ msgid "To maximize your account's security, <0>please activate a multi-factor au msgstr "Pour maximiser la sécurité de votre compte, <0>vous devez activer une option d'authentification multifactorielle." #: src/app/ReadGuidancePage.js:111 -msgid "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." -msgstr "Pour recevoir les résultats de l'analyse DKIM et des conseils, vous devez ajouter les sélecteurs DKIM utilisés pour chaque domaine. Les administrateurs de l'organisation peuvent ajouter des sélecteurs dans le \"profil administrateur\" en cliquant sur le bouton d'édition du domaine pour lequel ils souhaitent ajouter le sélecteur. Les sélecteurs les plus courants sont “selector1“ et “selector2“." +#~ msgid "To receive DKIM scan results and guidance, you must add the DKIM selectors used for each domain. Organization administrators can add selectors in the “Admin Profile” by clicking the edit button of the domain for which they wish to add the selector. Common selectors to keep an for are “selector1”, and “selector2”." +#~ msgstr "Pour recevoir les résultats de l'analyse DKIM et des conseils, vous devez ajouter les sélecteurs DKIM utilisés pour chaque domaine. Les administrateurs de l'organisation peuvent ajouter des sélecteurs dans le \"profil administrateur\" en cliquant sur le bouton d'édition du domaine pour lequel ils souhaitent ajouter le sélecteur. Les sélecteurs les plus courants sont “selector1“ et “selector2“." #: src/app/App.js:87 msgid "To view detailed scan results and other functionality, <0>please affiliate with an organization." @@ -3809,7 +3822,7 @@ msgstr "Total des messages" #~ msgstr "total des utilisateurs" #: src/app/SlideMessage.js:51 -#: src/landing/LandingPage.js:24 +#: src/landing/LandingPage.js:25 msgid "Track Digital Security" msgstr "Suivre la sécurité numérique" @@ -3822,7 +3835,7 @@ msgstr "Les résultats de suivi des domaines HSTS et HTTPS s’affichent incorre msgid "Tracker account has been successfully closed." msgstr "Le compte du traqueur a été fermé avec succès." -#: src/app/ReadGuidancePage.js:454 +#: src/app/ReadGuidancePage.js:444 msgid "Tracker automatically adds DKIM selectors using DMARC reports. Selectors will be added to Tracker when 1) the domain has a DMARC RUA record which includes \"mailto:dmarc@cyber.gc.ca\"; and 2) the selector has been used to sign an email and passed DKIM validation." msgstr "Tracker ajoute automatiquement des sélecteurs DKIM à l'aide des rapports DMARC. Les sélecteurs seront ajoutés à Tracker lorsque 1) le domaine possède un enregistrement DMARC RUA qui inclut \"mailto:dmarc@cyber.gc.ca\" ; et 2) le sélecteur a été utilisé pour signer un courriel et a passé la validation DKIM." @@ -3846,11 +3859,11 @@ msgstr "Contour du logo Suivi" msgid "Tracker logo text" msgstr "Texte du logo du Suivi" -#: src/app/ReadGuidancePage.js:171 +#: src/app/ReadGuidancePage.js:161 msgid "Tracker results refresh every 24 hours." msgstr "Les résultats de Suivi sont actualisés toutes les 24 heures." -#: src/app/ReadGuidancePage.js:211 +#: src/app/ReadGuidancePage.js:201 msgid "Tracker:" msgstr "Suivi :" @@ -4009,7 +4022,7 @@ msgstr "Impossible de mettre à jour votre numéro de téléphone, veuillez rée msgid "Unable to verify your phone number, please try again." msgstr "Impossible de vérifier votre numéro de téléphone, veuillez réessayer." -#: src/app/ReadGuidancePage.js:144 +#: src/app/ReadGuidancePage.js:134 msgid "Understanding Scan Metrics:" msgstr "Comprendre les métriques d'analyse :" @@ -4071,8 +4084,8 @@ msgid "User" msgstr "Utilisateur" #: src/organizationDetails/OrganizationAffiliations.js:32 -msgid "User Affiliations" -msgstr "Affiliations des utilisateurs" +#~ msgid "User Affiliations" +#~ msgstr "Affiliations des utilisateurs" #: src/admin/SuperAdminUserList.js:392 #: src/user/UserPage.js:255 @@ -4080,11 +4093,11 @@ msgid "User Email" msgstr "Courriel de l'utilisateur" #: src/admin/SuperAdminUserList.js:157 -#: src/admin/UserList.js:64 +#: src/admin/UserList.js:69 msgid "User List" msgstr "Liste des utilisateurs" -#: src/admin/UserList.js:148 +#: src/admin/UserList.js:153 msgid "User email" msgstr "Courriel de l'utilisateur" @@ -4170,7 +4183,7 @@ msgstr "Volume de messages usurpant domaine (rejet + quarantaine + aucun) :" msgid "WEB" msgstr "WEB" -#: src/domains/DomainsPage.js:205 +#: src/domains/DomainsPage.js:207 #: src/organizationDetails/OrganizationDomains.js:345 msgid "WILDCARD" msgstr "WILDCARD" @@ -4239,7 +4252,7 @@ msgstr "Conseils sur le Web" msgid "Web Scan Results" msgstr "Résultats de l'analyse du Web" -#: src/app/ReadGuidancePage.js:227 +#: src/app/ReadGuidancePage.js:217 msgid "Web Security:" msgstr "Sécurité du Web :" @@ -4272,11 +4285,11 @@ msgstr "Bienvenue dans votre vision personnelle de Suivi. Modérez la posture de msgid "Welcome, you are successfully signed in!" msgstr "Bienvenue, vous êtes connecté avec succès!" -#: src/app/ReadGuidancePage.js:406 +#: src/app/ReadGuidancePage.js:396 msgid "What does it mean if a domain is “unreachable”?" msgstr "Que veut dire le message « inaccessible » en parlant d’un domaine?" -#: src/app/ReadGuidancePage.js:426 +#: src/app/ReadGuidancePage.js:416 msgid "Where can I get a GC-approved TLS certificate?" msgstr "Où puis-je obtenir un certificat TLS approuvé par le GC?" @@ -4284,11 +4297,11 @@ msgstr "Où puis-je obtenir un certificat TLS approuvé par le GC?" #~ msgid "Where necessary adjust IT Plans and budget estimates for the FY where work is expected." #~ msgstr "Si nécessaire, ajustez les plans informatiques et les estimations budgétaires pour l'exercice financier où des travaux sont prévus." -#: src/app/ReadGuidancePage.js:183 +#: src/app/ReadGuidancePage.js:173 msgid "Where necessary adjust IT Plans and budget estimates where work is expected." msgstr "Au besoin, adapter les plans de la TI et les estimations budgétaires là où des travaux sont attendus." -#: src/app/ReadGuidancePage.js:362 +#: src/app/ReadGuidancePage.js:352 msgid "While other tools are useful to work alongside Tracker, they do not specifically adhere to the configuration requirements specified in the <0>Email Management Service Configuration Requirements and the <1>Web Site and Service Management Configuration Requirements. For a list of allowed protocols, ciphers, and curves review the <2>ITSP.40.062 TLS guidance." msgstr "Même si d’autres outils sont utiles en complément de Suivi, ils ne respectent pas précisément les exigences de configuration indiquées dans les <0>Exigences en matière de configuration des services de gestion des courriels et les <1>Exigences de configuration de la gestion des sites Web et des services. Pour une liste des protocoles, chiffrements et courbes autorisés, veuillez consulter les <2>Directives du protocole TLS ITSP.40.062." @@ -4296,15 +4309,15 @@ msgstr "Même si d’autres outils sont utiles en complément de Suivi, ils ne r #~ msgid "Why do other tools (<0>Hardenize, <1>SSL Labs, etc.) show positive results for a domain while Tracker shows negative results?" #~ msgstr "Pourquoi d’autres outils (<0>Hardenize, <1>Laboratoires SSL, etc.) affichent-ils des résultats positifs pour un domaine alors que Tracker affiche des résultats négatifs?" -#: src/app/ReadGuidancePage.js:359 +#: src/app/ReadGuidancePage.js:349 msgid "Why do other tools show positive results for a domain while Tracker shows negative results?" msgstr "Pourquoi d'autres outils affichent-ils des résultats positifs pour un domaine alors que Suivi affiche des résultats négatifs ?" -#: src/app/ReadGuidancePage.js:451 +#: src/app/ReadGuidancePage.js:441 msgid "Why does the guidance page not show the domain’s DKIM selectors even though they exist?" msgstr "Pourquoi la page d'orientation n'affiche-t-elle pas les sélecteurs DKIM du domaine alors qu'ils existent ?" -#: src/app/ReadGuidancePage.js:215 +#: src/app/ReadGuidancePage.js:205 msgid "Wiki" msgstr "Wiki" diff --git a/frontend/src/organizationDetails/OrganizationAffiliations.js b/frontend/src/organizationDetails/OrganizationAffiliations.js index a90c8bc526..1917b94bec 100644 --- a/frontend/src/organizationDetails/OrganizationAffiliations.js +++ b/frontend/src/organizationDetails/OrganizationAffiliations.js @@ -1,8 +1,8 @@ -import React from 'react' -import { Trans } from '@lingui/macro' +import React, { useCallback, useState } from 'react' +import { Trans, t } from '@lingui/macro' import { Box, Divider, Text } from '@chakra-ui/react' import { ErrorBoundary } from 'react-error-boundary' -import { number, string } from 'prop-types' +import { string } from 'prop-types' import { ListOf } from '../components/ListOf' import { UserCard } from '../components/UserCard' @@ -11,49 +11,91 @@ import { ErrorFallbackMessage } from '../components/ErrorFallbackMessage' import { RelayPaginationControls } from '../components/RelayPaginationControls' import { usePaginatedCollection } from '../utilities/usePaginatedCollection' import { PAGINATED_ORG_AFFILIATIONS as FORWARD } from '../graphql/queries' +import { SearchBox } from '../components/SearchBox' +import { useDebouncedFunction } from '../utilities/useDebouncedFunction' -export function OrganizationAffiliations({ usersPerPage = 10, orgSlug }) { - const { loading, isLoadingMore, error, nodes, next, previous, hasNextPage, hasPreviousPage } = usePaginatedCollection( - { +export function OrganizationAffiliations({ orgSlug }) { + const [usersPerPage, setUsersPerPage] = useState(10) + const [orderDirection, setOrderDirection] = useState('ASC') + const [orderField, setOrderField] = useState('PERMISSION') + const [searchTerm, setSearchTerm] = useState('') + const [debouncedSearchTerm, setDebouncedSearchTerm] = useState('') + + const memoizedSetDebouncedSearchTermCallback = useCallback(() => { + setDebouncedSearchTerm(searchTerm) + }, [searchTerm]) + + useDebouncedFunction(memoizedSetDebouncedSearchTermCallback, 500) + + const { loading, isLoadingMore, error, nodes, next, previous, hasNextPage, hasPreviousPage, resetToFirstPage } = + usePaginatedCollection({ fetchForward: FORWARD, - variables: { slug: orgSlug }, + variables: { + slug: orgSlug, + orderBy: { direction: orderDirection, field: orderField }, + search: debouncedSearchTerm, + }, recordsPerPage: usersPerPage, relayRoot: 'findOrganizationBySlug.affiliations', fetchPolicy: 'network-only', nextFetchPolicy: 'cache-first', - }, - ) + }) + + const orderByOptions = [ + { value: 'USERNAME', text: t`Email` }, + { value: 'DISPLAY_NAME', text: t`Name` }, + { value: 'PERMISSION', text: t`Role` }, + ] if (error) return - if (loading) - return ( - - User Affiliations - - ) + let userlist = loading ? ( + + ) : ( + ( + + No Users + + )} + mb="4" + > + {({ permission, user }, index) => ( + + + + + )} + + ) return ( - ( - - No Users - - )} - mb="4" - > - {({ permission, user }, index) => ( - - - - - )} - + + {userlist} ', () => { window.resizeTo(1024, 768) const orgSlug = 'tbs-sct-gc-ca' - const mocks = [ { request: { query: PAGINATED_ORG_AFFILIATIONS, - variables: { slug: 'tbs-sct-gc-ca', first: 10 }, + variables: { + first: 10, + slug: orgSlug, + orderBy: { direction: 'ASC', field: 'PERMISSION' }, + search: '', + }, }, result: { data: { @@ -132,10 +136,7 @@ describe('', () => { userName: null, })} > - +