Mercurial > hg > LGDataverses
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); + } + } + + } +}
