summaryrefslogtreecommitdiffstats
path: root/web/react/components/access_history_modal.jsx
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-10-07 16:58:27 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-10-14 12:50:45 -0700
commit536c55dc5f9f80ea67e2ccb39c1b4a276fbddc07 (patch)
treefe3661f3c6ea765e63ab743b21326a7fe1e5f7fc /web/react/components/access_history_modal.jsx
parent830e8b04d9cbc5652ab8b23d469e1c75ff5f8516 (diff)
downloadchat-536c55dc5f9f80ea67e2ccb39c1b4a276fbddc07.tar.gz
chat-536c55dc5f9f80ea67e2ccb39c1b4a276fbddc07.tar.bz2
chat-536c55dc5f9f80ea67e2ccb39c1b4a276fbddc07.zip
Initial changes to audit log along with structure for handling different audit types
Diffstat (limited to 'web/react/components/access_history_modal.jsx')
-rw-r--r--web/react/components/access_history_modal.jsx91
1 files changed, 75 insertions, 16 deletions
diff --git a/web/react/components/access_history_modal.jsx b/web/react/components/access_history_modal.jsx
index 2ad4d5b00..9aeb7f682 100644
--- a/web/react/components/access_history_modal.jsx
+++ b/web/react/components/access_history_modal.jsx
@@ -15,7 +15,7 @@ export default class AccessHistoryModal extends React.Component {
this.onHide = this.onHide.bind(this);
this.onShow = this.onShow.bind(this);
- let state = this.getStateFromStoresForAudits();
+ const state = this.getStateFromStoresForAudits();
state.moreInfo = [];
this.state = state;
@@ -54,29 +54,91 @@ export default class AccessHistoryModal extends React.Component {
}
render() {
var accessList = [];
- var currentHistoryDate = null;
for (var i = 0; i < this.state.audits.length; i++) {
var currentAudit = this.state.audits[i];
- var newHistoryDate = new Date(currentAudit.create_at);
- var newDate = null;
-
- if (!currentHistoryDate || currentHistoryDate.toLocaleDateString() !== newHistoryDate.toLocaleDateString()) {
- currentHistoryDate = newHistoryDate;
- newDate = (<div> {currentHistoryDate.toDateString()} </div>);
- }
+ var currentDate = new Date(currentAudit.create_at);
if (!currentAudit.session_id && currentAudit.action.search('/users/login') !== -1) {
currentAudit.session_id = 'N/A (Login attempt)';
}
+ const currentActionURL = currentAudit.action.replace(/\/api\/v[1-9]/, '');
+
+ let currentAuditDesc = '';
+
+ /* Handle specific audit type formatting semi-individually and
+ fall back to a best guess case if none exists
+
+ Supported audits:
+ /channels
+ - Create Channel X
+ - Update Channel X
+ - Update Channel Description X
+ - Delete Channel X
+ - Add User to Channel X
+ - Remove User from Channel X
+
+ /oauth
+ - Register X
+ - Allow Attempt/Success/Failure X
+
+ /team
+ - Revoke All Sessions X (NO CORRESPONDING ADDRESS)
+
+ - Update (users - ?) X
+ - Update Notify (?) X
+ - Login Attempt X
+ - Login (success/failure) X
+ - Logout (/logout) X
+ */
+ switch (currentActionURL) {
+ case '/channels/create':
+ break;
+ case '/channels/update':
+ break;
+ case '/channels/update_desc':
+ break;
+ case /\/channels\/[A-Za-z0-9]+\/delete/:
+ break;
+ case /\/channels\/[A-Za-z0-9]+\/add/:
+ break;
+ case /\/channels\/[A-Za-z0-9]+\/remove/:
+ break;
+ case '/oauth/register':
+ break;
+ case '/oauth/allow':
+ break;
+ case '/team/':
+ break;
+ default:
+ let currentActionDesc = '';
+
+ if (currentActionURL && currentActionURL.lastIndexOf('/') !== -1) {
+ currentActionDesc = currentActionURL.substring(currentActionURL.lastIndexOf('/') + 1).replace('_', ' ');
+ currentActionDesc = Utils.toTitleCase(currentActionDesc);
+ }
+
+ let currentExtraInfoDesc = '';
+ if (currentAudit.extra_info) {
+ currentExtraInfoDesc = currentAudit.extra_info;
+
+ if (currentExtraInfoDesc.indexOf('=') !== -1) {
+ currentExtraInfoDesc = currentExtraInfoDesc.substring(currentExtraInfoDesc.indexOf('=') + 1);
+ }
+ }
+
+ currentAuditDesc = currentActionDesc + ' ' + currentExtraInfoDesc;
+ break;
+ }
+
var moreInfo = (
<a
href='#'
className='theme'
onClick={this.handleMoreInfo.bind(this, i)}
>
- More info
+ {'More info'}
</a>
);
@@ -84,7 +146,6 @@ export default class AccessHistoryModal extends React.Component {
moreInfo = (
<div>
<div>{'Session ID: ' + currentAudit.session_id}</div>
- <div>{'URL: ' + currentAudit.action.replace(/\/api\/v[1-9]/, '')}</div>
</div>
);
}
@@ -99,11 +160,9 @@ export default class AccessHistoryModal extends React.Component {
key={'accessHistoryEntryKey' + i}
className='access-history__table'
>
- <div className='access__date'>{newDate}</div>
<div className='access__report'>
- <div className='report__time'>{newHistoryDate.toLocaleTimeString(navigator.language, {hour: '2-digit', minute: '2-digit'})}</div>
+ <div className='report__time'>{currentDate.toDateString() + ' - ' + currentDate.toLocaleTimeString(navigator.language, {hour: '2-digit', minute: '2-digit'}) + ' | ' + currentAuditDesc + ' from ' + currentAudit.ip_address}</div>
<div className='report__info'>
- <div>{'IP: ' + currentAudit.ip_address}</div>
{moreInfo}
</div>
{divider}
@@ -138,13 +197,13 @@ export default class AccessHistoryModal extends React.Component {
data-dismiss='modal'
aria-label='Close'
>
- <span aria-hidden='true'>&times;</span>
+ <span aria-hidden='true'>{'×'}</span>
</button>
<h4
className='modal-title'
id='myModalLabel'
>
- Access History
+ {'Access History'}
</h4>
</div>
<div