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 try {
40 PrincipalThreadLocal.setName(_userId);
41
42 User user = UserLocalServiceUtil.getUserById(_userId);
43
44 PermissionChecker permissionChecker =
45 PermissionCheckerFactoryUtil.create(user, true);
46
47 PermissionThreadLocal.setPermissionChecker(permissionChecker);
48
49 doRun();
50
51 _success = true;
52 }
53 catch (Exception e) {
54 _log.error(e, e);
55 }
56 finally {
57 PrincipalThreadLocal.setName(null);
58 PermissionThreadLocal.setPermissionChecker(null);
59 }
60 }
61
62 protected abstract void doRun() throws Exception;
63
64 private static Log _log = LogFactoryUtil.getLog(DoAsUserThread.class);
65
66 private long _userId;
67 private boolean _success;
68
69 }