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