VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/mattermost/client/1421.b0c789815cd443555927.js.map
{"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":""}

VaKeR 2022