1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.flowable.task;
20
21 import org.apache.syncope.common.lib.AnyOperations;
22 import org.apache.syncope.common.lib.request.UserUR;
23 import org.apache.syncope.common.lib.to.UserTO;
24 import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
25 import org.apache.syncope.core.persistence.api.dao.UserDAO;
26 import org.apache.syncope.core.persistence.api.entity.user.User;
27 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
28 import org.flowable.engine.delegate.DelegateExecution;
29
30 public class AutoActivate extends FlowableServiceTask {
31
32 protected final UserDataBinder dataBinder;
33
34 protected final UserDAO userDAO;
35
36 public AutoActivate(final UserDataBinder dataBinder, final UserDAO userDAO) {
37 this.dataBinder = dataBinder;
38 this.userDAO = userDAO;
39 }
40
41 @Override
42 protected void doExecute(final DelegateExecution execution) {
43 User user = execution.getVariable(FlowableRuntimeUtils.USER, User.class);
44 UserTO userTO = execution.getVariable(FlowableRuntimeUtils.USER_TO, UserTO.class);
45 if (userTO != null && userTO.getKey() != null && user.getKey() != null) {
46 user = userDAO.save(user);
47
48 UserUR req = AnyOperations.diff(userTO, dataBinder.getUserTO(user, true), false);
49
50 req.setPassword(null);
51
52 dataBinder.update(user, req);
53
54 execution.setVariable(FlowableRuntimeUtils.USER, user);
55 }
56
57 execution.setVariable(FlowableRuntimeUtils.PROPAGATE_ENABLE, Boolean.TRUE);
58 }
59 }