1
14
15 package com.liferay.portal.security.permission;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.model.User;
20 import com.liferay.portal.security.auth.PrincipalThreadLocal;
21 import com.liferay.portal.service.UserLocalServiceUtil;
22
23
28 public abstract class DoAsUserThread extends Thread {
29
30 public DoAsUserThread(long userId) {
31 _userId = userId;
32 }
33
34 public boolean isSuccess() {
35 return _success;
36 }
37
38 public void run() {
39 PermissionChecker permissionChecker = null;
40
41 try {
42 PrincipalThreadLocal.setName(_userId);
43
44 User user = UserLocalServiceUtil.getUserById(_userId);
45
46 permissionChecker = PermissionCheckerFactory.create(user, true);
47
48 PermissionThreadLocal.setPermissionChecker(permissionChecker);
49
50 doRun();
51
52 _success = true;
53 }
54 catch (Exception e) {
55 _log.error(e, e);
56 }
57 finally {
58 PrincipalThreadLocal.setName(null);
59 PermissionThreadLocal.setPermissionChecker(null);
60
61 if (permissionChecker != null) {
62 try {
63 PermissionCheckerFactory.recycle(permissionChecker);
64 }
65 catch (Exception e) {
66 _log.error(e, e);
67 }
68 }
69 }
70 }
71
72 protected abstract void doRun() throws Exception;
73
74 private static Log _log = LogFactoryUtil.getLog(DoAsUserThread.class);
75
76 private long _userId;
77 private boolean _success;
78
79 }