]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThread.java
Authenticate SLC execution threads
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / ProcessThread.java
index b116696f16ee15a2227db219f7e7ca54622a265e..3117a3fd578b8229f7c4de65479916532b5e6464 100644 (file)
@@ -30,6 +30,8 @@ import org.argeo.slc.execution.ExecutionProcess;
 import org.argeo.slc.execution.ExecutionStep;
 import org.argeo.slc.process.RealizedFlow;
 import org.argeo.slc.process.SlcExecution;
+import org.springframework.security.Authentication;
+import org.springframework.security.context.SecurityContextHolder;
 
 /** Thread of the SLC Process, starting the sub executions. */
 @SuppressWarnings("deprecation")
@@ -57,8 +59,15 @@ public class ProcessThread extends Thread {
        }
 
        public final void run() {
-               log.info("\n##\n## SLC Process #" + process.getUuid()
-                               + " STARTED\n##\n");
+               // authenticate thread
+               Authentication authentication = getProcessThreadGroup()
+                               .getAuthentication();
+               if (authentication == null)
+                       throw new SlcException("Can only execute authenticated threads");
+               SecurityContextHolder.getContext().setAuthentication(authentication);
+
+               log.info("\n##\n## SLC Process #" + process.getUuid() + " STARTED by "
+                               + authentication.getName() + "\n##\n");
 
                // Start logging
                new LoggingThread().start();