update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b third try
[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 updateUserSuccess() {
171 this.alt.actions.global.hideScreenLoader.defer();
172 let users = this.users || [];
173 users[this.activeIndex] = {
174 'user-name': this['user-name'],
175 'user-domain': this['user-domain'],
176 platformRoles: this.platformRoles,
177 disabled: this.disabled,
178 projectRoles: this.projectRoles
179 }
180 this.setState({
181 users,
182 isEdit: true,
183 isReadOnly: true
184 })
185 }
186 deleteUserSuccess() {
187 this.alt.actions.global.hideScreenLoader.defer();
188 let users = this.users;
189 users.splice(this.activeIndex, 1);
190 this.setState({users, userOpen: false})
191 }
192 createUserSuccess() {
193 this.alt.actions.global.hideScreenLoader.defer();
194 let users = this.users || [];
195 users.push({
196 'user-name': this['user-name'],
197 'user-domain': this['user-domain'],
198 platformRoles: this.platformRoles,
199 disabled: this.disabled,
200 projectRoles: this.projectRoles,
201 });
202 let newState = {
203 users,
204 isEdit: true,
205 isReadOnly: true,
206 activeIndex: users.length - 1
207 };
208 _.merge(newState, this.resetPassword())
209 this.setState(newState);
210 }
211 }