ada70677ee6a34896d9e73134d9dbafc624fc2d0
[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'] = 'system';
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.isReadOnly = true;
30 this.userOpen = false;
31 this.hideColumns = false;
32 this.isEdit = false;
33 // this.exportPublicMethods({})
34 }
35 /**
36 * [handleFieldUpdate description]
37 * @param {Object} data {
38 * [store_property] : [value]
39 * }
40 * @return {[type]} [description]
41 */
42 handleUpdateInput(data) {
43 this.setState(data);
44 }
45 handleAddProjectItem(item) {
46 let projectRoles = this.projectRoles;
47 projectRoles.push('');
48 this.setState({projectRoles});
49 }
50 handleRemoveProjectItem(i) {
51 let projectRoles = this.projectRoles;
52 projectRoles.splice(i, 1);
53 console.log('Removing', projectRoles)
54 this.setState({projectRoles});
55 }
56 handleUpdateProjectRole(data) {
57 let i = data[0];
58 let e = data[1];
59 let projectRoles = this.projectRoles
60 projectRoles[i] = JSON.parse(e.currentTarget.value);
61 this.setState({
62 projectRoles
63 });
64 }
65 viewUser(data) {
66 let user = data[0];
67 let userIndex = data[1];
68
69 let ActiveUser = {
70 'user-name': user['user-name'],
71 'user-domain': user['user-domain'],
72 platformRoles: user.platformRoles || this.platformRoles,
73 disabled: user.hasOwnProperty('disabled').toString().toUpperCase(),
74 projectRoles: user.projectRoles || this.projectRoles,
75 currentPassword: user.password
76 }
77 let state = _.merge({
78 activeIndex: userIndex,
79 userOpen: true,
80 isEdit: true,
81 isReadOnly: true
82 }, ActiveUser);
83 this.setState(state)
84 }
85 editUser(isEdit) {
86 this.setState({
87 isReadOnly: isEdit
88 })
89 }
90 handleCloseUserPanel() {
91 this.setState({
92 userOpen: false,
93 isEdit: false,
94 isReadOnly: true
95 })
96 }
97 handleHideColumns(e) {
98 if(this.userOpen && e.currentTarget.classList.contains('hideColumns')) {
99 this.setState({
100 hideColumns: true
101 })
102 } else {
103 this.setState({
104 hideColumns: false
105 })
106 }
107 }
108 handleDisabledChange(isDisabled){
109 this.setState({
110 disabled: isDisabled
111 })
112 }
113 handlePlatformRoleUpdate(data){
114 let platform_role = data[0];
115 let checked = data[1];
116 let platformRoles = this.platformRoles;
117 platformRoles[platform_role] = checked;
118 this.setState({
119 platformRoles
120 })
121 }
122 resetUser() {
123 let username = '';
124 let domain = 'system';
125 let disabled = false;
126 let platformRoles = {
127 super_admin: false,
128 platform_admin: false,
129 platform_oper: false
130 };
131 let projectRoles = [];
132 let currentPassword = '';
133 let oldPassword = '';
134 let newPassword = '';
135 let confirmPassword = '';
136 return {
137 'user-name' : username,
138 'user-domain' : domain,
139 disabled,
140 platformRoles,
141 projectRoles,
142 currentPassword,
143 'old-password': oldPassword,
144 'new-password': newPassword,
145 'confirm-password': confirmPassword
146 }
147 }
148 resetPassword() {
149 let currentPassword = '';
150 let oldPassword = '';
151 let newPassword = '';
152 let confirmPassword = '';
153 return {
154 currentPassword,
155 'old-password': oldPassword,
156 'new-password': newPassword,
157 'confirm-password': confirmPassword
158 }
159 }
160 handleAddUser() {
161 this.setState(_.merge( this.resetUser() ,
162 {
163 isEdit: false,
164 userOpen: true,
165 activeIndex: null,
166 isReadOnly: false
167 }
168 ))
169 }
170 handleCreateUser() {
171
172 }
173 handleDisabledChange(value) {
174 this.disabled = value;
175 }
176 handleUpdateUser() {
177
178 }
179
180 getUsersSuccess(users) {
181 this.alt.actions.global.hideScreenLoader.defer();
182 this.setState({users});
183 }
184 updateUserSuccess() {
185 this.alt.actions.global.hideScreenLoader.defer();
186 let users = this.users || [];
187 users[this.activeIndex] = {
188 'user-name': this['user-name'],
189 'user-domain': this['user-domain'],
190 platformRoles: this.platformRoles,
191 disabled: this.disabled,
192 projectRoles: this.projectRoles
193 }
194 this.setState({
195 users,
196 isEdit: true,
197 isReadOnly: true
198 })
199 }
200 deleteUserSuccess() {
201 this.alt.actions.global.hideScreenLoader.defer();
202 let users = this.users;
203 users.splice(this.activeIndex, 1);
204 this.setState({users, userOpen: false})
205 }
206 createUserSuccess() {
207 this.alt.actions.global.hideScreenLoader.defer();
208 let users = this.users || [];
209 users.push({
210 'user-name': this['user-name'],
211 'user-domain': this['user-domain'],
212 platformRoles: this.platformRoles,
213 disabled: this.disabled,
214 projectRoles: this.projectRoles,
215 });
216 let newState = {
217 users,
218 isEdit: true,
219 isReadOnly: true,
220 activeIndex: users.length - 1
221 };
222 _.merge(newState, this.resetPassword())
223 this.setState(newState);
224 }
225 }