![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"1421.b0c789815cd443555927.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/audit_table/holders.ts","webpack://mattermost-webapp/./src/components/audit_table/audit_row/audit_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/channel_row/channel_create_direct_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/channel_row/channel_default_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/channel_row/channel_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/user_row/user_update_active_session_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/user_row/user_row.tsx","webpack://mattermost-webapp/./src/components/audit_table/format_audit.tsx","webpack://mattermost-webapp/./src/components/audit_table/audit_table.tsx","webpack://mattermost-webapp/./src/components/audit_table/index.ts","webpack://mattermost-webapp/./src/components/color_input.tsx","webpack://mattermost-webapp/./src/components/form_error.tsx","webpack://mattermost-webapp/./src/components/localized_placeholder_textarea.tsx","webpack://mattermost-webapp/./src/components/widgets/icons/fa_warning_icon.tsx","webpack://mattermost-webapp/./src/utils/password.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {defineMessages} from 'react-intl';\n\nconst holders = defineMessages({\n sessionRevoked: {\n id: 'audit_table.sessionRevoked',\n defaultMessage: 'The session with id {sessionId} was revoked',\n },\n channelCreated: {\n id: 'audit_table.channelCreated',\n defaultMessage: 'Created the {channelName} channel',\n },\n establishedDM: {\n id: 'audit_table.establishedDM',\n defaultMessage: 'Established a direct message channel with {username}',\n },\n nameUpdated: {\n id: 'audit_table.nameUpdated',\n defaultMessage: 'Updated the {channelName} channel name',\n },\n headerUpdated: {\n id: 'audit_table.headerUpdated',\n defaultMessage: 'Updated the {channelName} channel header',\n },\n channelDeleted: {\n id: 'audit_table.channelDeleted',\n defaultMessage: 'Archived the channel with the URL {url}',\n },\n userAdded: {\n id: 'audit_table.userAdded',\n defaultMessage: 'Added {username} to the {channelName} channel',\n },\n userRemoved: {\n id: 'audit_table.userRemoved',\n defaultMessage: 'Removed {username} to the {channelName} channel',\n },\n attemptedRegisterApp: {\n id: 'audit_table.attemptedRegisterApp',\n defaultMessage: 'Attempted to register a new OAuth Application with ID {id}',\n },\n attemptedAllowOAuthAccess: {\n id: 'audit_table.attemptedAllowOAuthAccess',\n defaultMessage: 'Attempted to allow a new OAuth service access',\n },\n successfullOAuthAccess: {\n id: 'audit_table.successfullOAuthAccess',\n defaultMessage: 'Successfully gave a new OAuth service access',\n },\n failedOAuthAccess: {\n id: 'audit_table.failedOAuthAccess',\n defaultMessage: 'Failed to allow a new OAuth service access - the redirect URI did not match the previously registered callback',\n },\n attemptedOAuthToken: {\n id: 'audit_table.attemptedOAuthToken',\n defaultMessage: 'Attempted to get an OAuth access token',\n },\n successfullOAuthToken: {\n id: 'audit_table.successfullOAuthToken',\n defaultMessage: 'Successfully added a new OAuth service',\n },\n oauthTokenFailed: {\n id: 'audit_table.oauthTokenFailed',\n defaultMessage: 'Failed to get an OAuth access token - {token}',\n },\n attemptedLogin: {\n id: 'audit_table.attemptedLogin',\n defaultMessage: 'Attempted to login',\n },\n authenticated: {\n id: 'audit_table.authenticated',\n defaultMessage: 'Successfully authenticated',\n },\n successfullLogin: {\n id: 'audit_table.successfullLogin',\n defaultMessage: 'Successfully logged in',\n },\n failedLogin: {\n id: 'audit_table.failedLogin',\n defaultMessage: 'FAILED login attempt',\n },\n updatePicture: {\n id: 'audit_table.updatePicture',\n defaultMessage: 'Updated your profile picture',\n },\n updateGeneral: {\n id: 'audit_table.updateGeneral',\n defaultMessage: 'Updated the general settings of your account',\n },\n attemptedPassword: {\n id: 'audit_table.attemptedPassword',\n defaultMessage: 'Attempted to change password',\n },\n successfullPassword: {\n id: 'audit_table.successfullPassword',\n defaultMessage: 'Successfully changed password',\n },\n failedPassword: {\n id: 'audit_table.failedPassword',\n defaultMessage: 'Failed to change password - tried to update user password who was logged in through OAuth',\n },\n updatedRol: {\n id: 'audit_table.updatedRol',\n defaultMessage: 'Updated user role(s) to ',\n },\n member: {\n id: 'audit_table.member',\n defaultMessage: 'member',\n },\n accountActive: {\n id: 'audit_table.accountActive',\n defaultMessage: 'Account activated',\n },\n accountInactive: {\n id: 'audit_table.accountInactive',\n defaultMessage: 'Account deactivated',\n },\n by: {\n id: 'audit_table.by',\n defaultMessage: ' by {username}',\n },\n byAdmin: {\n id: 'audit_table.byAdmin',\n defaultMessage: ' by an admin',\n },\n sentEmail: {\n id: 'audit_table.sentEmail',\n defaultMessage: 'Sent an email to {email} to reset your password',\n },\n attemptedReset: {\n id: 'audit_table.attemptedReset',\n defaultMessage: 'Attempted to reset password',\n },\n successfullReset: {\n id: 'audit_table.successfullReset',\n defaultMessage: 'Successfully reset password',\n },\n updateGlobalNotifications: {\n id: 'audit_table.updateGlobalNotifications',\n defaultMessage: 'Updated your global notification settings',\n },\n attemptedWebhookCreate: {\n id: 'audit_table.attemptedWebhookCreate',\n defaultMessage: 'Attempted to create a webhook',\n },\n succcessfullWebhookCreate: {\n id: 'audit_table.successfullWebhookCreate',\n defaultMessage: 'Successfully created a webhook',\n },\n failedWebhookCreate: {\n id: 'audit_table.failedWebhookCreate',\n defaultMessage: 'Failed to create a webhook - bad channel permissions',\n },\n attemptedWebhookDelete: {\n id: 'audit_table.attemptedWebhookDelete',\n defaultMessage: 'Attempted to delete a webhook',\n },\n successfullWebhookDelete: {\n id: 'audit_table.successfullWebhookDelete',\n defaultMessage: 'Successfully deleted a webhook',\n },\n failedWebhookDelete: {\n id: 'audit_table.failedWebhookDelete',\n defaultMessage: 'Failed to delete a webhook - inappropriate conditions',\n },\n logout: {\n id: 'audit_table.logout',\n defaultMessage: 'Logged out of your account',\n },\n verified: {\n id: 'audit_table.verified',\n defaultMessage: 'Successfully verified your email address',\n },\n revokedAll: {\n id: 'audit_table.revokedAll',\n defaultMessage: 'Revoked all current sessions for the team',\n },\n loginAttempt: {\n id: 'audit_table.loginAttempt',\n defaultMessage: ' (Login attempt)',\n },\n loginFailure: {\n id: 'audit_table.loginFailure',\n defaultMessage: ' (Login failure)',\n },\n attemptedLicenseAdd: {\n id: 'audit_table.attemptedLicenseAdd',\n defaultMessage: 'Attempted to add new license',\n },\n successfullLicenseAdd: {\n id: 'audit_table.successfullLicenseAdd',\n defaultMessage: 'Successfully added new license',\n },\n failedExpiredLicenseAdd: {\n id: 'audit_table.failedExpiredLicenseAdd',\n defaultMessage: 'Failed to add a new license as it has either expired or not yet been started',\n },\n failedInvalidLicenseAdd: {\n id: 'audit_table.failedInvalidLicenseAdd',\n defaultMessage: 'Failed to add an invalid license',\n },\n licenseRemoved: {\n id: 'audit_table.licenseRemoved',\n defaultMessage: 'Successfully removed a license',\n },\n});\n\nexport default holders;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedDate, FormattedTime, useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {getUser} from 'mattermost-redux/selectors/entities/users';\n\nimport {toTitleCase} from 'utils/utils';\n\nimport holders from '../holders';\n\nexport type Props = {\n audit: Audit;\n actionURL: string;\n desc?: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n}\n\nexport default function AuditRow({\n actionURL,\n audit,\n desc: aDesc,\n showUserId,\n showIp,\n showSession,\n}: Props) {\n const intl = useIntl();\n let desc = aDesc;\n if (!desc) {\n /* Currently not called anywhere */\n if (audit.extra_info.indexOf('revoked_all=') >= 0) {\n desc = intl.formatMessage(holders.revokedAll);\n } else {\n let actionDesc = '';\n if (actionURL && actionURL.lastIndexOf('/') !== -1) {\n actionDesc = actionURL.substring(actionURL.lastIndexOf('/') + 1).replace('_', ' ');\n actionDesc = toTitleCase(actionDesc);\n }\n\n let extraInfoDesc = '';\n if (audit.extra_info) {\n extraInfoDesc = audit.extra_info;\n\n if (extraInfoDesc.indexOf('=') !== -1) {\n extraInfoDesc = extraInfoDesc.substring(extraInfoDesc.indexOf('=') + 1);\n }\n }\n desc = actionDesc + ' ' + extraInfoDesc;\n }\n }\n\n const date = new Date(audit.create_at);\n const timestamp = (\n <div>\n <div>\n <FormattedDate\n value={date}\n day='2-digit'\n month='short'\n year='numeric'\n />\n </div>\n <div>\n <FormattedTime\n value={date}\n hour='2-digit'\n minute='2-digit'\n />\n </div>\n </div>\n );\n\n const ip = audit.ip_address;\n const sessionId = audit.session_id;\n\n const auditProfile = useSelector((state: GlobalState) => getUser(state, audit.user_id));\n const userId = auditProfile ? auditProfile.email : audit.user_id;\n let uContent;\n if (showUserId) {\n uContent = <td className='word-break--all'>{userId}</td>;\n }\n\n let iContent;\n if (showIp) {\n iContent = (\n <td className='whitespace--nowrap word-break--all'>\n {ip}\n </td>\n );\n }\n\n let sContent;\n if (showSession) {\n sContent = (\n <td className='whitespace--nowrap word-break--all'>\n {sessionId}\n </td>\n );\n }\n\n let descStyle = '';\n if (desc.toLowerCase().indexOf('fail') !== -1) {\n descStyle = ' color--error';\n }\n\n return (\n <tr key={audit.id}>\n <td className='whitespace--nowrap word-break--all'>\n {timestamp}\n </td>\n {uContent}\n <td className={'word-break--all' + descStyle}>{desc}</td>\n {iContent}\n {sContent}\n </tr>\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {Channel} from '@mattermost/types/channels';\n\nimport {getDirectTeammate} from 'mattermost-redux/selectors/entities/channels';\n\nimport type {GlobalState} from 'types/store';\n\nimport AuditRow from '../audit_row/audit_row';\nimport holders from '../holders';\n\ntype Props = {\n audit: Audit;\n actionURL: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n channelObj?: Channel | null;\n}\n\nexport default function ChannelCreateDirectRow({\n audit,\n actionURL,\n showUserId,\n showIp,\n showSession,\n channelObj,\n}: Props) {\n const intl = useIntl();\n\n const channelId = channelObj?.id ?? '';\n\n const desc = intl.formatMessage(holders.establishedDM, {\n username: useSelector((state: GlobalState) =>\n getDirectTeammate(state, channelId),\n )?.username,\n });\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {getUser} from 'mattermost-redux/selectors/entities/users';\n\nimport AuditRow from '../audit_row/audit_row';\nimport holders from '../holders';\n\ntype Props = {\n audit: Audit;\n actionURL: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n channelInfo: string[];\n channelName: string;\n channelURL: string;\n};\n\nexport default function ChannelDefaultRow({\n audit,\n actionURL,\n showUserId,\n showIp,\n showSession,\n channelInfo,\n channelName,\n channelURL,\n}: Props) {\n const intl = useIntl();\n\n let userIdField = [];\n let userId = '';\n let username = '';\n\n if (channelInfo[1]) {\n userIdField = channelInfo[1].split('=');\n\n if (userIdField.indexOf('user_id') >= 0) {\n userId = userIdField[userIdField.indexOf('user_id') + 1];\n }\n }\n\n const profile = useSelector((state: GlobalState) => getUser(state, userId));\n if (profile) {\n username = profile.username;\n }\n\n let desc = '';\n if ((/\\/channels\\/[A-Za-z0-9]+\\/delete/).test(actionURL)) {\n desc = intl.formatMessage(holders.channelDeleted, {url: channelURL});\n } else if ((/\\/channels\\/[A-Za-z0-9]+\\/add/).test(actionURL)) {\n desc = intl.formatMessage(holders.userAdded, {username, channelName});\n } else if ((/\\/channels\\/[A-Za-z0-9]+\\/remove/).test(actionURL)) {\n desc = intl.formatMessage(holders.userRemoved, {\n username,\n channelName,\n });\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {getChannelByName} from 'mattermost-redux/selectors/entities/channels';\n\nimport ChannelCreateDirectRow from './channel_create_direct_row';\nimport ChannelDefaultRow from './channel_default_row';\n\nimport AuditRow from '../audit_row/audit_row';\nimport holders from '../holders';\n\ntype Props = {\n audit: Audit;\n actionURL: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n}\n\nexport default function ChannelRow({\n audit,\n actionURL,\n showUserId,\n showIp,\n showSession,\n}: Props): JSX.Element {\n const props = {\n showUserId,\n showIp,\n showSession,\n };\n const intl = useIntl();\n\n const channelInfo = audit.extra_info.split(' ');\n const channelNameField = channelInfo[0].split('=');\n\n const channelURL = channelNameField.indexOf('name') >= 0 ? channelNameField[channelNameField.indexOf('name') + 1] : '';\n const channelObj = useSelector((state: GlobalState) => getChannelByName(state, channelURL));\n const channelName = channelObj?.display_name ?? channelURL;\n\n switch (actionURL) {\n case '/channels/create':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.channelCreated, {channelName})}\n {...props}\n />\n );\n case '/channels/create_direct':\n return (\n <ChannelCreateDirectRow\n audit={audit}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n channelObj={channelObj}\n />\n );\n case '/channels/update':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.nameUpdated, {channelName})}\n {...props}\n />\n );\n case '/channels/update_desc': // support the old path\n case '/channels/update_header':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.headerUpdated, {channelName})}\n {...props}\n />\n );\n default: {\n return (\n <ChannelDefaultRow\n audit={audit}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n channelInfo={channelInfo}\n channelName={channelName}\n channelURL={channelURL}\n />\n );\n }\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector} from 'react-redux';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {getCurrentUser, getUser} from 'mattermost-redux/selectors/entities/users';\nimport {isSystemAdmin} from 'mattermost-redux/utils/user_utils';\n\nimport AuditRow from '../audit_row/audit_row';\nimport holders from '../holders';\n\ntype Props = {\n audit: Audit;\n actionURL: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n updateField: string;\n userInfo: string[];\n}\n\nexport default function UserUpdateActiveSessionRow({\n audit,\n actionURL,\n showUserId,\n showIp,\n showSession,\n updateField,\n userInfo,\n}: Props): JSX.Element {\n const intl = useIntl();\n\n let desc = '';\n\n if (updateField === 'true') {\n desc = intl.formatMessage(holders.accountActive);\n } else if (updateField === 'false') {\n desc = intl.formatMessage(holders.accountInactive);\n }\n\n const actingUserInfo = userInfo[1].split('=');\n const isSessionUser = actingUserInfo[0] === 'session_user';\n const actingUser = useSelector((state: GlobalState) => getUser(state, isSessionUser ? actingUserInfo[1] : ''));\n const user = useSelector((state: GlobalState) => getCurrentUser(state));\n if (isSessionUser) {\n if (user && actingUser && isSystemAdmin(user.roles)) {\n desc += intl.formatMessage(holders.by, {\n username: actingUser.username,\n });\n } else if (user && actingUser) {\n desc += intl.formatMessage(holders.byAdmin);\n }\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\n\nimport type {Audit} from '@mattermost/types/audits';\n\nimport UserUpdateActiveSessionRow from './user_update_active_session_row';\n\nimport AuditRow from '../audit_row/audit_row';\nimport holders from '../holders';\n\ntype Props = {\n audit: Audit;\n actionURL: string;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n}\n\nexport default function UserRow({\n audit,\n actionURL,\n showUserId,\n showIp,\n showSession,\n}: Props): JSX.Element {\n const props = {\n showUserId,\n showIp,\n showSession,\n };\n const intl = useIntl();\n\n const userInfo = audit.extra_info.split(' ');\n\n let desc = '';\n switch (actionURL) {\n case '/users/login':\n if (userInfo[0] === 'attempt') {\n desc = intl.formatMessage(holders.attemptedLogin);\n } else if (userInfo[0] === 'success') {\n desc = intl.formatMessage(holders.successfullLogin);\n } else if (userInfo[0] === 'authenticated') {\n desc = intl.formatMessage(holders.authenticated);\n } else if (userInfo[0]) {\n desc = intl.formatMessage(holders.failedLogin);\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n {...props}\n />\n );\n case '/users/revoke_session':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.sessionRevoked, {\n sessionId: userInfo[0].split('=')[1],\n })}\n {...props}\n />\n );\n case '/users/newimage':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.updatePicture)}\n {...props}\n />\n );\n case '/users/update':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.updateGeneral)}\n {...props}\n />\n );\n case '/users/newpassword':\n if (userInfo[0] === 'attempted') {\n desc = intl.formatMessage(holders.attemptedPassword);\n } else if (userInfo[0] === 'completed') {\n desc = intl.formatMessage(holders.successfullPassword);\n } else if (\n userInfo[0] ===\n 'failed - tried to update user password who was logged in through oauth'\n ) {\n desc = intl.formatMessage(holders.failedPassword);\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.updateGeneral)}\n {...props}\n />\n );\n case '/users/update_roles': {\n const userRoles = userInfo[0].split('=')[1];\n\n desc = intl.formatMessage(holders.updatedRol);\n if (userRoles.trim()) {\n desc += userRoles;\n } else {\n desc += intl.formatMessage(holders.member);\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n {...props}\n />\n );\n }\n case '/users/update_active': {\n const updateType = userInfo[0].split('=')[0];\n const updateField = userInfo[0].split('=')[1];\n\n /* Either describes account activation/deactivation or a revoked session as part of an account deactivation */\n if (updateType === 'active') {\n return (\n <UserUpdateActiveSessionRow\n audit={audit}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n updateField={updateField}\n userInfo={userInfo}\n />\n );\n } else if (updateType === 'session_id') {\n desc = intl.formatMessage(holders.sessionRevoked, {\n sessionId: updateField,\n });\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n {...props}\n />\n );\n }\n case '/users/send_password_reset':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.sentEmail, {\n email: userInfo[0].split('=')[1],\n })}\n {...props}\n />\n );\n case '/users/reset_password':\n if (userInfo[0] === 'attempt') {\n desc = intl.formatMessage(holders.attemptedReset);\n } else if (userInfo[0] === 'success') {\n desc = intl.formatMessage(holders.successfullReset);\n }\n\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n {...props}\n />\n );\n case '/users/update_notify':\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={intl.formatMessage(holders.updateGlobalNotifications)}\n {...props}\n />\n );\n default:\n return (\n <AuditRow\n audit={audit}\n actionURL={actionURL}\n desc={desc}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\n\nimport type {Audit} from '@mattermost/types/audits';\n\nimport {toTitleCase} from 'utils/utils';\n\nimport AuditRow from './audit_row/audit_row';\nimport ChannelRow from './channel_row/channel_row';\nimport holders from './holders';\nimport UserRow from './user_row/user_row';\n\nexport type Props = {\n audit: Audit;\n showUserId: boolean;\n showIp: boolean;\n showSession: boolean;\n}\n\nexport default function FormatAudit({\n audit,\n showUserId,\n showIp,\n showSession,\n}: Props) {\n const intl = useIntl();\n const actionURL = audit.action.replace(/\\/api\\/v[1-9]/, '');\n\n if (actionURL.indexOf('/channels') === 0) {\n return (\n <ChannelRow\n audit={audit}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n }\n\n if (actionURL.indexOf('/users') === 0) {\n return (\n <UserRow\n audit={audit}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n }\n\n const {formatMessage} = intl;\n let auditDesc = '';\n\n if (actionURL.indexOf('/oauth') === 0) {\n const oauthInfo = audit.extra_info.split(' ');\n\n switch (actionURL) {\n case '/oauth/register': {\n const clientIdField = oauthInfo[0].split('=');\n\n if (clientIdField[0] === 'client_id') {\n auditDesc = formatMessage(holders.attemptedRegisterApp, {id: clientIdField[1]});\n }\n\n break;\n }\n case '/oauth/allow':\n if (oauthInfo[0] === 'attempt') {\n auditDesc = formatMessage(holders.attemptedAllowOAuthAccess);\n } else if (oauthInfo[0] === 'success') {\n auditDesc = formatMessage(holders.successfullOAuthAccess);\n } else if (oauthInfo[0] === 'fail - redirect_uri did not match registered callback') {\n auditDesc = formatMessage(holders.failedOAuthAccess);\n }\n\n break;\n case '/oauth/access_token':\n if (oauthInfo[0] === 'attempt') {\n auditDesc = formatMessage(holders.attemptedOAuthToken);\n } else if (oauthInfo[0] === 'success') {\n auditDesc = formatMessage(holders.successfullOAuthToken);\n } else {\n const oauthTokenFailure = oauthInfo[0].split('-');\n\n if (oauthTokenFailure[0].trim() === 'fail' && oauthTokenFailure[1]) {\n auditDesc = formatMessage(holders.oauthTokenFailed, {token: oauthTokenFailure[1].trim()});\n }\n }\n\n break;\n default:\n break;\n }\n } else if (actionURL.indexOf('/hooks') === 0) {\n const webhookInfo = audit.extra_info;\n\n switch (actionURL) {\n case '/hooks/incoming/create':\n if (webhookInfo === 'attempt') {\n auditDesc = formatMessage(holders.attemptedWebhookCreate);\n } else if (webhookInfo === 'success') {\n auditDesc = formatMessage(holders.succcessfullWebhookCreate);\n } else if (webhookInfo === 'fail - bad channel permissions') {\n auditDesc = formatMessage(holders.failedWebhookCreate);\n }\n\n break;\n case '/hooks/incoming/delete':\n if (webhookInfo === 'attempt') {\n auditDesc = formatMessage(holders.attemptedWebhookDelete);\n } else if (webhookInfo === 'success') {\n auditDesc = formatMessage(holders.successfullWebhookDelete);\n } else if (webhookInfo === 'fail - inappropriate conditions') {\n auditDesc = formatMessage(holders.failedWebhookDelete);\n }\n\n break;\n default:\n break;\n }\n } else if (actionURL.indexOf('/license') === 0) {\n const licenseInfo = audit.extra_info;\n\n switch (actionURL) {\n case '/license/add':\n if (licenseInfo === 'attempt') {\n auditDesc = formatMessage(holders.attemptedLicenseAdd);\n } else if (licenseInfo === 'success') {\n auditDesc = formatMessage(holders.successfullLicenseAdd);\n } else if (licenseInfo === 'failed - expired or non-started license') {\n auditDesc = formatMessage(holders.failedExpiredLicenseAdd);\n } else if (licenseInfo === 'failed - invalid license') {\n auditDesc = formatMessage(holders.failedInvalidLicenseAdd);\n }\n\n break;\n case '/license/remove':\n auditDesc = formatMessage(holders.licenseRemoved);\n break;\n default:\n break;\n }\n } else if (actionURL.indexOf('/admin/download_compliance_report') === 0) {\n auditDesc = toTitleCase(audit.extra_info);\n } else {\n switch (actionURL) {\n case '/logout':\n auditDesc = formatMessage(holders.logout);\n break;\n case '/verify_email':\n auditDesc = formatMessage(holders.verified);\n break;\n default:\n break;\n }\n }\n\n return (\n <AuditRow\n audit={audit}\n desc={auditDesc}\n actionURL={actionURL}\n showUserId={showUserId}\n showIp={showIp}\n showSession={showSession}\n />\n );\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage, injectIntl} from 'react-intl';\nimport type {IntlShape} from 'react-intl';\n\nimport type {Audit} from '@mattermost/types/audits';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport FormatAudit from './format_audit';\n\ntype Props = {\n intl: IntlShape;\n audits: Audit[];\n showUserId?: boolean;\n showIp?: boolean;\n showSession?: boolean;\n currentUser: UserProfile;\n actions: {\n getMissingProfilesByIds: (userIds: string[]) => void;\n };\n};\n\nexport class AuditTable extends React.PureComponent<Props> {\n componentDidMount() {\n const ids = this.props.audits.map((audit) => audit.user_id);\n this.props.actions.getMissingProfilesByIds(ids);\n }\n\n render() {\n const {audits, showUserId, showIp, showSession} = this.props;\n\n let userIdContent;\n if (showUserId) {\n userIdContent = (\n <th>\n <FormattedMessage\n id='audit_table.userId'\n defaultMessage='User ID'\n />\n </th>\n );\n }\n\n let ipContent;\n if (showIp) {\n ipContent = (\n <th>\n <FormattedMessage\n id='audit_table.ip'\n defaultMessage='IP Address'\n />\n </th>\n );\n }\n\n let sessionContent;\n if (showSession) {\n sessionContent = (\n <th>\n <FormattedMessage\n id='audit_table.session'\n defaultMessage='Session ID'\n />\n </th>\n );\n }\n\n return (\n <table className='table'>\n <thead>\n <tr>\n <th>\n <FormattedMessage\n id='audit_table.timestamp'\n defaultMessage='Timestamp'\n />\n </th>\n {userIdContent}\n <th>\n <FormattedMessage\n id='audit_table.action'\n defaultMessage='Action'\n />\n </th>\n {ipContent}\n {sessionContent}\n </tr>\n </thead>\n <tbody data-testid='auditTableBody'>\n {audits.map((audit) => (\n <FormatAudit\n key={audit.id}\n audit={audit}\n showUserId={Boolean(this.props.showUserId)}\n showIp={Boolean(this.props.showIp)}\n showSession={Boolean(this.props.showSession)}\n />\n ))}\n </tbody>\n </table>\n );\n }\n}\n\nexport default injectIntl(AuditTable);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport type {Dispatch} from 'redux';\n\nimport {getMissingProfilesByIds} from 'mattermost-redux/actions/users';\nimport {getCurrentUser} from 'mattermost-redux/selectors/entities/users';\n\nimport type {GlobalState} from 'types/store';\n\nimport AuditTable from './audit_table';\n\nfunction mapStateToProps(state: GlobalState) {\n return {\n currentUser: getCurrentUser(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch) {\n return {\n actions: bindActionCreators({\n getMissingProfilesByIds,\n }, dispatch),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuditTable);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {ChromePicker} from 'react-color';\nimport type {ColorResult} from 'react-color';\nimport tinycolor from 'tinycolor2';\n\ntype Props = {\n id: string;\n onChange: (color: string) => void;\n value: string;\n isDisabled?: boolean;\n}\n\ntype State = {\n focused: boolean;\n isOpened: boolean;\n value: string;\n}\n\nexport default class ColorInput extends React.PureComponent<Props, State> {\n private colorPicker: React.RefObject<HTMLDivElement>;\n private colorInput: React.RefObject<HTMLInputElement>;\n\n public constructor(props: Props) {\n super(props);\n this.colorPicker = React.createRef();\n this.colorInput = React.createRef();\n\n this.state = {\n focused: false,\n isOpened: false,\n value: props.value,\n };\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (!state.focused && props.value !== state.value) {\n return {\n value: props.value,\n };\n }\n\n return null;\n }\n\n public componentDidUpdate(prevProps: Props, prevState: State) {\n const {isOpened: prevIsOpened} = prevState;\n const {isOpened} = this.state;\n\n if (isOpened !== prevIsOpened) {\n if (isOpened) {\n document.addEventListener('click', this.checkClick, {capture: true});\n } else {\n document.removeEventListener('click', this.checkClick);\n }\n }\n }\n\n private checkClick = (e: MouseEvent): void => {\n if (!this.colorPicker.current || !this.colorPicker.current.contains(e.target as Element)) {\n this.setState({isOpened: false});\n }\n };\n\n private togglePicker = () => {\n if (!this.state.isOpened && this.colorInput.current) {\n this.colorInput.current.focus();\n }\n this.setState({isOpened: !this.state.isOpened});\n };\n\n public handleColorChange = (newColorData: ColorResult) => {\n this.setState({focused: false});\n this.props.onChange(newColorData.hex);\n };\n\n private onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n\n const color = tinycolor(value);\n const normalizedColor = '#' + color.toHex();\n\n if (color.isValid()) {\n this.props.onChange(normalizedColor);\n }\n\n this.setState({value});\n };\n\n private onFocus = (event: React.FocusEvent<HTMLInputElement>): void => {\n this.setState({\n focused: true,\n });\n\n if (event.target) {\n event.target.setSelectionRange(1, event.target.value.length);\n }\n };\n\n private onBlur = () => {\n const value = this.state.value;\n\n const color = tinycolor(value);\n const normalizedColor = '#' + color.toHex();\n\n if (color.isValid()) {\n this.props.onChange(normalizedColor);\n\n this.setState({\n value: normalizedColor,\n });\n } else {\n this.setState({\n value: this.props.value,\n });\n }\n\n this.setState({\n focused: false,\n });\n };\n\n private onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // open picker on enter or space\n if (event.key === 'Enter' || event.key === ' ') {\n this.togglePicker();\n }\n };\n\n public render() {\n const {id} = this.props;\n const {isOpened, value} = this.state;\n\n return (\n <div className='color-input input-group'>\n <input\n id={`${id}-inputColorValue`}\n ref={this.colorInput}\n className='form-control'\n type='text'\n value={value}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.onKeyDown}\n maxLength={7}\n disabled={this.props.isDisabled}\n data-testid='color-inputColorValue'\n\n />\n {!this.props.isDisabled &&\n <span\n id={`${id}-squareColorIcon`}\n className='input-group-addon color-pad'\n onClick={this.togglePicker}\n >\n <i\n id={`${id}-squareColorIconValue`}\n className='color-icon'\n style={{\n backgroundColor: value,\n }}\n />\n </span>\n }\n {isOpened && (\n <div\n ref={this.colorPicker}\n className='color-popover'\n id={`${id}-ChromePickerModal`}\n >\n <ChromePicker\n color={value}\n onChange={this.handleColorChange}\n disableAlpha={true}\n />\n </div>\n )}\n </div>\n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\n\nconst TYPE_MODAL = 'modal';\nconst TYPE_BACKSTAGE = 'backstage';\n\n// accepts either a single error or an array of errors\ntype Props = {\n type?: React.ReactNode;\n error?: React.ReactNode;\n textClassName?: string;\n iconClassName?: string;\n margin?: boolean;\n errors?: React.ReactNode[];\n};\n\nconst EMPTY_ERROR_LIST: React.ReactNode[] = [];\n\nconst FormError: React.FC<Props> = ({\n error = null,\n errors = EMPTY_ERROR_LIST,\n iconClassName,\n margin,\n textClassName,\n type,\n}) => {\n if (!error && errors.length === 0) {\n return null;\n }\n\n // look for the first truthy error to display\n let message = error;\n\n if (!message) {\n for (const err of errors) {\n if (err) {\n message = err;\n }\n }\n }\n\n if (!message) {\n return null;\n }\n\n if (type === TYPE_MODAL) {\n return (\n <div className='form-group'>\n <label className='col-sm-12 has-error'>{message}</label>\n </div>\n );\n }\n\n if (type === TYPE_BACKSTAGE) {\n return (\n <div className='pull-left has-error'>\n <label className='control-label'>{message}</label>\n </div>\n );\n }\n\n if (margin) {\n return (\n <div className='form-group has-error'>\n <label className='control-label'>{message}</label>\n </div>\n );\n }\n\n return (\n <div className={`col-sm-12 ${textClassName || 'has-error'}`}>\n <label className='control-label'>\n <i\n className={`fa ${iconClassName || 'fa-exclamation-circle'}`}\n />{' '}\n {message}\n </label>\n </div>\n );\n};\n\nexport default React.memo(FormError);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl, type MessageDescriptor} from 'react-intl';\n\ntype Props = {\n placeholder: MessageDescriptor;\n} & Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'placeholder'>;\n\nconst LocalizedPlaceholderTextarea = React.forwardRef<HTMLTextAreaElement, Props>(({placeholder, ...otherProps}, ref) => {\n const intl = useIntl();\n\n return (\n <textarea\n ref={ref}\n placeholder={intl.formatMessage(placeholder)}\n {...otherProps}\n />\n );\n});\n\nLocalizedPlaceholderTextarea.displayName = 'LocalizedPlaceholderTextarea';\n\nexport default LocalizedPlaceholderTextarea;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport {useIntl} from 'react-intl';\n\ntype Props = {\n additionalClassName?: string;\n}\n\nconst WarningIcon = ({additionalClassName}: Props) => {\n const {formatMessage} = useIntl();\n return (\n <i\n className={classNames('fa fa-warning', additionalClassName)}\n title={formatMessage({id: 'generic_icons.warning', defaultMessage: 'Warning Icon'})}\n />\n );\n};\n\nexport default React.memo(WarningIcon);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {IntlShape} from 'react-intl';\nimport {FormattedMessage, defineMessages} from 'react-intl';\n\nimport type {PasswordConfig} from 'mattermost-redux/selectors/entities/general';\n\nimport Constants from 'utils/constants';\n\nexport function isValidPassword(password: string, passwordConfig: PasswordConfig, intl?: IntlShape) {\n let errorId = passwordErrors.passwordError.id;\n const telemetryErrorIds = [];\n let valid = true;\n const minimumLength = passwordConfig.minimumLength || Constants.MIN_PASSWORD_LENGTH;\n\n if (password.length < minimumLength || password.length > Constants.MAX_PASSWORD_LENGTH) {\n valid = false;\n telemetryErrorIds.push({field: 'password', rule: 'error_length'});\n }\n\n if (passwordConfig.requireLowercase) {\n if (!password.match(/[a-z]/)) {\n valid = false;\n }\n\n errorId += 'Lowercase';\n telemetryErrorIds.push({field: 'password', rule: 'lowercase'});\n }\n\n if (passwordConfig.requireUppercase) {\n if (!password.match(/[A-Z]/)) {\n valid = false;\n }\n\n errorId += 'Uppercase';\n telemetryErrorIds.push({field: 'password', rule: 'uppercase'});\n }\n\n if (passwordConfig.requireNumber) {\n if (!password.match(/[0-9]/)) {\n valid = false;\n }\n\n errorId += 'Number';\n telemetryErrorIds.push({field: 'password', rule: 'number'});\n }\n\n if (passwordConfig.requireSymbol) {\n if (!password.match(/[ !\"\\\\#$%&'()*+,-./:;<=>?@[\\]^_`|~]/)) {\n valid = false;\n }\n\n errorId += 'Symbol';\n telemetryErrorIds.push({field: 'password', rule: 'symbol'});\n }\n\n let error;\n if (!valid) {\n error = intl ? (\n intl.formatMessage(\n {\n id: errorId,\n defaultMessage: 'Must be {min}-{max} characters long.',\n },\n {\n min: minimumLength,\n max: Constants.MAX_PASSWORD_LENGTH,\n },\n )\n ) : (\n <FormattedMessage\n id={errorId}\n defaultMessage='Must be {min}-{max} characters long.'\n values={{\n min: minimumLength,\n max: Constants.MAX_PASSWORD_LENGTH,\n }}\n />\n );\n }\n\n return {valid, error, telemetryErrorIds};\n}\n\nexport const passwordErrors = defineMessages({\n passwordError: {id: 'user.settings.security.passwordError', defaultMessage: 'Must be {min}-{max} characters long.'},\n passwordErrorLowercase: {id: 'user.settings.security.passwordErrorLowercase', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters.'},\n passwordErrorLowercaseNumber: {id: 'user.settings.security.passwordErrorLowercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters and numbers.'},\n passwordErrorLowercaseNumberSymbol: {id: 'user.settings.security.passwordErrorLowercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters, numbers, and special characters.'},\n passwordErrorLowercaseSymbol: {id: 'user.settings.security.passwordErrorLowercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters and special characters.'},\n passwordErrorLowercaseUppercase: {id: 'user.settings.security.passwordErrorLowercaseUppercase', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters.'},\n passwordErrorLowercaseUppercaseNumber: {id: 'user.settings.security.passwordErrorLowercaseUppercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, and numbers.'},\n passwordErrorLowercaseUppercaseNumberSymbol: {id: 'user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, numbers, and special characters.'},\n passwordErrorLowercaseUppercaseSymbol: {id: 'user.settings.security.passwordErrorLowercaseUppercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, and special characters.'},\n passwordErrorNumber: {id: 'user.settings.security.passwordErrorNumber', defaultMessage: 'Must be {min}-{max} characters long and include numbers.'},\n passwordErrorNumberSymbol: {id: 'user.settings.security.passwordErrorNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include numbers and special characters.'},\n passwordErrorSymbol: {id: 'user.settings.security.passwordErrorSymbol', defaultMessage: 'Must be {min}-{max} characters long and include special characters.'},\n passwordErrorUppercase: {id: 'user.settings.security.passwordErrorUppercase', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters.'},\n passwordErrorUppercaseNumber: {id: 'user.settings.security.passwordErrorUppercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, and numbers.'},\n passwordErrorUppercaseNumberSymbol: {id: 'user.settings.security.passwordErrorUppercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, numbers, and special characters.'},\n passwordErrorUppercaseSymbol: {id: 'user.settings.security.passwordErrorUppercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, and special characters.'},\n});\n"],"names":["defineMessages","sessionRevoked","id","defaultMessage","channelCreated","establishedDM","nameUpdated","headerUpdated","channelDeleted","userAdded","userRemoved","attemptedRegisterApp","attemptedAllowOAuthAccess","successfullOAuthAccess","failedOAuthAccess","attemptedOAuthToken","successfullOAuthToken","oauthTokenFailed","attemptedLogin","authenticated","successfullLogin","failedLogin","updatePicture","updateGeneral","attemptedPassword","successfullPassword","failedPassword","updatedRol","member","accountActive","accountInactive","by","byAdmin","sentEmail","attemptedReset","successfullReset","updateGlobalNotifications","attemptedWebhookCreate","succcessfullWebhookCreate","failedWebhookCreate","attemptedWebhookDelete","successfullWebhookDelete","failedWebhookDelete","logout","verified","revokedAll","loginAttempt","loginFailure","attemptedLicenseAdd","successfullLicenseAdd","failedExpiredLicenseAdd","failedInvalidLicenseAdd","licenseRemoved","AuditRow","_ref","actionURL","audit","desc","aDesc","showUserId","showIp","showSession","intl","useIntl","extra_info","indexOf","formatMessage","holders","actionDesc","lastIndexOf","substring","replace","toTitleCase","extraInfoDesc","date","Date","create_at","timestamp","React","FormattedDate","value","day","month","year","FormattedTime","hour","minute","ip","ip_address","sessionId","session_id","auditProfile","useSelector","state","getUser","user_id","userId","email","uContent","iContent","sContent","className","descStyle","toLowerCase","key","propTypes","_pt","isRequired","ChannelCreateDirectRow","_channelObj$id","_useSelector","channelObj","channelId","username","getDirectTeammate","ChannelDefaultRow","channelInfo","channelName","channelURL","userIdField","split","profile","test","url","ChannelRow","_channelObj$display_n","props","channelNameField","getChannelByName","display_name","Object","assign","UserUpdateActiveSessionRow","updateField","userInfo","actingUserInfo","isSessionUser","actingUser","user","getCurrentUser","isSystemAdmin","roles","UserRow","userRoles","trim","updateType","FormatAudit","action","auditDesc","oauthInfo","clientIdField","oauthTokenFailure","token","webhookInfo","licenseInfo","AuditTable","componentDidMount","ids","this","audits","map","actions","getMissingProfilesByIds","render","userIdContent","ipContent","sessionContent","FormattedMessage","Boolean","injectIntl","connect","currentUser","dispatch","bindActionCreators","ColorInput","constructor","super","_defineProperty","e","colorPicker","current","contains","target","setState","isOpened","colorInput","focus","newColorData","focused","onChange","hex","event","color","tinycolor","normalizedColor","toHex","isValid","setSelectionRange","length","togglePicker","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","prevIsOpened","document","addEventListener","checkClick","capture","removeEventListener","concat","ref","type","onBlur","onFocus","onKeyDown","maxLength","disabled","isDisabled","onClick","style","backgroundColor","ChromePicker","handleColorChange","disableAlpha","EMPTY_ERROR_LIST","FormError","error","errors","iconClassName","margin","textClassName","message","err","LocalizedPlaceholderTextarea","placeholder","otherProps","_objectWithoutProperties","_excluded","displayName","WarningIcon","additionalClassName","classNames","title","isValidPassword","password","passwordConfig","errorId","passwordErrors","passwordError","telemetryErrorIds","valid","minimumLength","Constants","MIN_PASSWORD_LENGTH","MAX_PASSWORD_LENGTH","push","field","rule","requireLowercase","match","requireUppercase","requireNumber","requireSymbol","min","max","values","passwordErrorLowercase","passwordErrorLowercaseNumber","passwordErrorLowercaseNumberSymbol","passwordErrorLowercaseSymbol","passwordErrorLowercaseUppercase","passwordErrorLowercaseUppercaseNumber","passwordErrorLowercaseUppercaseNumberSymbol","passwordErrorLowercaseUppercaseSymbol","passwordErrorNumber","passwordErrorNumberSymbol","passwordErrorSymbol","passwordErrorUppercase","passwordErrorUppercaseNumber","passwordErrorUppercaseNumberSymbol","passwordErrorUppercaseSymbol"],"sourceRoot":""}