diff src/main/java/edu/harvard/iq/dataverse/ApiTokenPage.java @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/edu/harvard/iq/dataverse/ApiTokenPage.java	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,71 @@
+package edu.harvard.iq.dataverse;
+
+import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean;
+import edu.harvard.iq.dataverse.authorization.users.ApiToken;
+import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
+import static edu.harvard.iq.dataverse.util.JsfHelper.JH;
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.logging.Logger;
+import javax.ejb.EJB;
+import javax.faces.application.FacesMessage;
+import javax.faces.view.ViewScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@ViewScoped
+@Named("ApiTokenPage")
+public class ApiTokenPage implements java.io.Serializable {
+
+    private static final Logger logger = Logger.getLogger(ApiTokenPage.class.getCanonicalName());
+
+    @Inject
+    DataverseSession session;
+    @EJB
+    AuthenticationServiceBean authSvc;
+
+    ApiToken apiToken;
+
+    public String getApiToken() {
+
+        if (session.getUser().isAuthenticated()) {
+            AuthenticatedUser au = (AuthenticatedUser) session.getUser();
+            apiToken = authSvc.findApiTokenByUser(au);
+            if (apiToken != null) {
+                return apiToken.getTokenString();
+            } else {
+                return "API token for " + au.getName() + " not found";
+            }
+        } else {
+            return "Only authenticated users can have API tokens.";
+        }
+
+    }
+
+    public void generate() {
+        if (session.getUser().isAuthenticated()) {
+            AuthenticatedUser au = (AuthenticatedUser) session.getUser();
+
+            apiToken = authSvc.findApiTokenByUser(au);
+            if (apiToken != null) {
+                String logMsg = "An API token has already been generated for authenticated user id " + au.getId();
+                String userMsg = "API token could not be generated.";
+                logger.info(userMsg + " " + logMsg);
+                JH.addMessage(FacesMessage.SEVERITY_ERROR, userMsg);
+            } else {
+                /**
+                 * @todo DRY! Stolen from BuiltinUsers API page
+                 */
+                ApiToken newToken = new ApiToken();
+                newToken.setTokenString(java.util.UUID.randomUUID().toString());
+                newToken.setAuthenticatedUser(au);
+                Calendar c = Calendar.getInstance();
+                newToken.setCreateTime(new Timestamp(c.getTimeInMillis()));
+                c.roll(Calendar.YEAR, 1);
+                newToken.setExpireTime(new Timestamp(c.getTimeInMillis()));
+                authSvc.save(newToken);
+            }
+        }
+
+    }
+}