58839957f04cfab1453844c8b100bdef79fd8e9a
[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.disabled || this.disabled,
74 projectRoles: user.projectRoles || this.projectRoles
75 }
76 let state = _.merge({
77 activeIndex: userIndex,
78 userOpen: true,
79 isEdit: true,
80 isReadOnly: true
81 }, ActiveUser);
82 this.setState(state)
83 }
84 editUser(isEdit) {
85 this.setState({
86 isReadOnly: isEdit
87 })
88 }
89 handleCloseUserPanel() {
90 this.setState({
91 userOpen: false,
92 isEdit: false,
93 isReadOnly: true
94 })
95 }
96 handleHideColumns(e) {
97 if(this.userOpen && e.currentTarget.classList.contains('hideColumns')) {
98 this.setState({
99 hideColumns: true
100 })
101 } else {
102 this.setState({
103 hideColumns: false
104 })
105 }
106 }
107 handleDisabledChange(isDisabled){
108 this.setState({
109 disabled: isDisabled
110 })
111 }
112 handlePlatformRoleUpdate(data){
113 let platform_role = data[0];
114 let checked = data[1];
115 let platformRoles = this.platformRoles;
116 platformRoles[platform_role] = checked;
117 this.setState({
118 platformRoles
119 })
120 }
121 resetUser() {
122 let username = '';
123 let domain = 'system';
124 let disabled = false;
125 let platformRoles = {
126 super_admin: false,
127 platform_admin: false,
128 platform_oper: false
129 };
130 let projectRoles = [];
131 let currentPassword = '';
132 let oldPassword = '';
133 let newPassword = '';
134 let confirmPassword = '';
135 return {
136 'user-name' : username,
137 'user-domain' : domain,
138 disabled,
139 platformRoles,
140 projectRoles,
141 currentPassword,
142 'old-password': oldPassword,
143 'new-password': newPassword,
144 'confirm-password': confirmPassword
145 }
146 }
147 resetPassword() {
148 let currentPassword = '';
149 let oldPassword = '';
150 let newPassword = '';
151 let confirmPassword = '';
152 return {
153 currentPassword,
154 'old-password': oldPassword,
155 'new-password': newPassword,
156 'confirm-password': confirmPassword
157 }
158 }
159 handleAddUser() {
160 this.setState(_.merge( this.resetUser() ,
161 {
162 isEdit: false,
163 userOpen: true,
164 activeIndex: null,
165 isReadOnly: false
166 }
167 ))
168 }
169 handleCreateUser() {
170
171 }
172 handleUpdateUser() {
173
174 }
175
176 getUsersSuccess(users) {
177 this.alt.actions.global.hideScreenLoader.defer();
178 this.setState({users});
179 }
180 updateUserSuccess() {
181 this.alt.actions.global.hideScreenLoader.defer();
182 let users = this.users || [];
183 users[this.activeIndex] = {
184 'user-name': this['user-name'],
185 'user-domain': this['user-domain'],
186 platformRoles: this.platformRoles,
187 disabled: this.disabled,
188 projectRoles: this.projectRoles
189 }
190 this.setState({users})
191 }
192 deleteUserSuccess() {
193 this.alt.actions.global.hideScreenLoader.defer();
194 let users = this.users;
195 users.splice(this.activeIndex, 1);
196 this.setState({users, userOpen: false})
197 }
198 createUserSuccess() {
199 this.alt.actions.global.hideScreenLoader.defer();
200 let users = this.users || [];
201 users.push({
202 'user-name': this['user-name'],
203 'user-domain': this['user-domain'],
204 platformRoles: this.platformRoles,
205 disabled: this.disabled,
206 projectRoles: this.projectRoles,
207 });
208 let newState = {
209 users,
210 isEdit: true,
211 isReadOnly: true,
212 activeIndex: users.length - 1
213 };
214 _.merge(newState, this.resetPassword())
215 this.setState(newState);
216 }
217 }