407d9d2d4b2e95639d7c01629e62b2144fcbce85
[osm/UI.git] / skyquake / plugins / user-management / src / dashboard / userMgmtStore.js
1 /*
2 * STANDARD_RIFT_IO_COPYRIGHT
3 */
4 import UserManagementActions from './userMgmtActions.js';
5 import UserManagementSource from './userMgmtSource.js';
6 import _ from 'lodash';
7 export default class UserManagementStore {
8 constructor() {
9 this.actions = UserManagementActions(this.alt);
10 this.bindActions(this.actions);
11 this.registerAsync(UserManagementSource);
12 this.users = [];
13 this['user-name'] = '';
14 this['user-domain'] = '';
15 this.disabled = false;
16 this.platformRoles = {
17 super_admin: false,
18 platform_admin: false,
19 platform_oper: false
20 };
21 this.projectRoles = ['Project:Role'];
22 this.projectRolesOptions = ['Choose your adventure', 'Project:Role', 'Project:Another Role'];
23 this.currentPassword = '';
24 this['old-password'] = '';
25 this['new-password'] = '';
26 this['confirm-password'] = '';
27
28 this.activeIndex = null;
29 this.userOpen = false;
30 this.hideColumns = false;
31 this.isEdit = false;
32 // this.exportPublicMethods({})
33 }
34 /**
35 * [handleFieldUpdate description]
36 * @param {Object} data {
37 * [store_property] : [value]
38 * }
39 * @return {[type]} [description]
40 */
41 handleUpdateInput(data) {
42 this.setState(data);
43 }
44 handleAddProjectItem(item) {
45 let projectRoles = this.projectRoles;
46 projectRoles.push('');
47 this.setState({projectRoles});
48 }
49 handleRemoveProjectItem(i) {
50 let projectRoles = this.projectRoles;
51 projectRoles.splice(i, 1);
52 console.log('Removing', projectRoles)
53 this.setState({projectRoles});
54 }
55 handleUpdateProjectRole(data) {
56 let i = data[0];
57 let e = data[1];
58 let projectRoles = this.projectRoles
59 projectRoles[i] = JSON.parse(e.currentTarget.value);
60 this.setState({
61 projectRoles
62 });
63 }
64 viewUser(data) {
65 let user = data[0];
66 let userIndex = data[1];
67
68 let ActiveUser = {
69 'user-name': user['user-name'],
70 'user-domain': user['user-domain'],
71 platformRoles: user.platformRoles || this.platformRoles,
72 disabled: user.disabled || this.disabled,
73 projectRoles: user.projectRoles || this.projectRoles
74 }
75 let state = _.merge({
76 activeIndex: userIndex,
77 userOpen: true,
78 isEdit: true
79 }, ActiveUser);
80 this.setState(state)
81 }
82 handleCloseUserPanel() {
83 this.setState({
84 userOpen: false,
85 isEdit: false
86 })
87 }
88 handleHideColumns(e) {
89 if(this.userOpen && e.currentTarget.classList.contains('hideColumns')) {
90 this.setState({
91 hideColumns: true
92 })
93 } else {
94 this.setState({
95 hideColumns: false
96 })
97 }
98 }
99 handleDisabledChange(isDisabled){
100 this.setState({
101 disabled: isDisabled
102 })
103 }
104 handlePlatformRoleUpdate(data){
105 let platform_role = data[0];
106 let checked = data[1];
107 let platformRoles = this.platformRoles;
108 platformRoles[platform_role] = checked;
109 this.setState({
110 platformRoles
111 })
112 }
113 resetUser() {
114 let username = '';
115 let domain = '';
116 let disabled = false;
117 let platformRoles = {
118 super_admin: false,
119 platform_admin: false,
120 platform_oper: false
121 };
122 let projectRoles = [];
123 let currentPassword = '';
124 let oldPassword = '';
125 let newPassword = '';
126 let confirmPassword = '';
127 return {
128 'user-name' : username,
129 'user-domain' : domain,
130 disabled,
131 platformRoles,
132 projectRoles,
133 currentPassword,
134 'old-password': oldPassword,
135 'new-password': newPassword,
136 'confirm-password': confirmPassword
137 }
138 }
139 resetPassword() {
140 let currentPassword = '';
141 let oldPassword = '';
142 let newPassword = '';
143 let confirmPassword = '';
144 return {
145 currentPassword,
146 'old-password': oldPassword,
147 'new-password': newPassword,
148 'confirm-password': confirmPassword
149 }
150 }
151 handleAddUser() {
152 this.setState(_.merge( this.resetUser() ,{ isEdit: false, userOpen: true }))
153 }
154 handleCreateUser() {
155
156 }
157 handleUpdateUser() {
158
159 }
160
161 getUsersSuccess(users) {
162 this.alt.actions.global.hideScreenLoader.defer();
163 this.setState({users});
164 }
165 updateUserSuccess() {
166 this.alt.actions.global.hideScreenLoader.defer();
167 let users = this.users || [];
168 users[this.activeIndex] = {
169 'user-name': this['user-name'],
170 'user-domain': this['user-domain'],
171 platformRoles: this.platformRoles,
172 disabled: this.disabled,
173 projectRoles: this.projectRoles
174 }
175 this.setState({users})
176 }
177 deleteUserSuccess() {
178 this.alt.actions.global.hideScreenLoader.defer();
179 let users = this.users;
180 users.splice(this.activeIndex, 1);
181 this.setState({users, userOpen: false})
182 }
183 createUserSuccess() {
184 this.alt.actions.global.hideScreenLoader.defer();
185 let users = this.users || [];
186 users.push({
187 'user-name': this['user-name'],
188 'user-domain': this['user-domain'],
189 platformRoles: this.platformRoles,
190 disabled: this.disabled,
191 projectRoles: this.projectRoles
192 });
193 let newState = {users, isEdit: true};
194 _.merge(newState, this.resetPassword())
195 this.setState(newState);
196 }
197 }