Skip to content
Snippets Groups Projects
Commit 563cf1c5 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Started changes for multi-user setup and custom UCD insertion. Refactoring (in progress)

parent 6725839c
No related branches found
No related tags found
No related merge requests found
Showing
with 530 additions and 175 deletions
package it.inaf.ia2.tsm.webapp;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
/**
* JAXB model for TSM web application configuration.
*
* @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
*/
@XmlRootElement(name = "configuration")
public class Configuration {
private CredentialsConfiguration credentialsConfiguration;
private List<String> customUCDs;
private String version;
public Configuration() {
version = Version.NUMBER;
credentialsConfiguration = new CredentialsConfiguration();
customUCDs = new ArrayList<>();
}
@XmlElement(name = "credentials-config")
public CredentialsConfiguration getCredentialsConfiguration() {
return credentialsConfiguration;
}
public void setCredentialsConfiguration(CredentialsConfiguration credentialsConfiguration) {
this.credentialsConfiguration = credentialsConfiguration;
}
@XmlElementWrapper(name = "custom-ucds")
@XmlElement(name = "ucd")
public List<String> getCustomUCDs() {
return customUCDs;
}
public void setCustomUCDs(List<String> customUCDs) {
this.customUCDs = customUCDs;
}
@XmlAttribute(name = "version")
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
......@@ -22,33 +22,31 @@
*/
package it.inaf.ia2.tsm.webapp;
import ari.ucidy.UCDSyntax;
import ari.ucidy.UCDWord;
import ari.ucidy.UCDWordList;
import it.inaf.ia2.tsm.webapp.xmlconfig.Configuration;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.xml.bind.JAXB;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
/**
*
* @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
*/
@Named("config")
@ApplicationScoped
public class WebAppConfigurationBean {
public class ConfigurationData {
private static final Logger LOG = LoggerFactory.getLogger(WebAppConfigurationBean.class);
private static final Logger LOG = LoggerFactory.getLogger(ConfigurationData.class);
private File configFile;
private String password;
private Configuration configuration;
@PostConstruct
......@@ -59,7 +57,6 @@ public class WebAppConfigurationBean {
prop.load(in);
}
configFile = new File(prop.getProperty("config_file_path"));
password = prop.getProperty("password");
if (!configFile.exists()) {
......@@ -72,21 +69,15 @@ public class WebAppConfigurationBean {
} else {
configuration = getOldConfigurationUpdated(configFile);
if (configuration != null) {
updateConfigurationFile();
} else {
// Configuration file was ok, simply unmarshal it
// Configuration file exists, simply unmarshal it
configuration = JAXB.unmarshal(configFile, Configuration.class);
}
}
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}
public Configuration getConfig() {
public Configuration getData() {
return configuration;
}
......@@ -94,33 +85,16 @@ public class WebAppConfigurationBean {
JAXB.marshal(configuration, configFile);
}
public String getPassword() {
return password;
public synchronized void addUser(UserConfiguration user) throws IOException {
configuration.getUsers().add(user);
updateConfigurationFile();
}
/**
* Checking for old configuration and updating configuration model, if
* necessary. This method returns null if no update is necessary.
*/
private Configuration getOldConfigurationUpdated(File file) throws IOException {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
String nodeName = doc.getDocumentElement().getNodeName();
if (nodeName.equals("credentials-config")) {
LOG.debug("Detected version 1.0.3 or lower. Extracting CredentialsConfiguration and updating the XML model.");
CredentialsConfiguration cc = JAXB.unmarshal(file, CredentialsConfiguration.class);
Configuration updatedConfiguration = new Configuration();
updatedConfiguration.setCredentialsConfiguration(cc);
return updatedConfiguration;
public String getRestPath() {
return FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath() + "/rest";
}
// Currently for version 1.0.4+ no updated are necessary.
return null;
} catch (Throwable t) {
LOG.warn("Unable to parse XML configuration. Deleting it and creating a new empy one.");
return new Configuration();
}
public String getVersion() {
return Version.NUMBER;
}
}
/*
* _____________________________________________________________________________
*
* INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
* Trieste INAF - IA2 Italian Center for Astronomical Archives
* _____________________________________________________________________________
*
* Copyright (C) 2017 Istituto Nazionale di Astrofisica
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License Version 3 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
import javax.ws.rs.Path;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.POST;
import javax.ws.rs.QueryParam;
/**
* REST Web Service for setting opening dialog status using JavaScript. This is
* necessary to conditionally disable JSF validation when dialog is closed.
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Path("credentialsDialog")
@RequestScoped
public class CredentialsDialogResource {
@Inject
CredentialsEditing credentialsEditing;
@POST
public void setOpened(@QueryParam("opened") boolean opened) {
credentialsEditing.setCredentialsDialogOpened(opened);
}
}
......@@ -24,6 +24,7 @@ package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.api.Credentials;
import it.inaf.ia2.tsm.api.DBWrapper;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.IOException;
import java.io.Serializable;
import java.sql.SQLException;
......@@ -31,11 +32,8 @@ import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -45,23 +43,24 @@ import org.slf4j.LoggerFactory;
*/
@Named("credentialsInsertion")
@SessionScoped
public class CredentialsBean implements Serializable {
public class CredentialsEditing implements Serializable {
private static final long serialVersionUID = -2688980249773483198L;
private static final Logger log = LoggerFactory.getLogger(CredentialsBean.class);
private static final Logger LOG = LoggerFactory.getLogger(CredentialsEditing.class);
@Inject
WebAppConfigurationBean ccBean;
private User user;
@Inject
private ConfigurationData config;
@Inject
Conversation conversation;
@Inject
SchemaSelectionBean schemaSelectionBean;
private SchemaSelectionBean schemaSelectionBean;
private boolean loggedIn;
private String adminPassword;
private String loginError;
private boolean credentialsDialogOpened;
private Credentials sourceCredentials;
private Credentials tapSchemaCredentials;
......@@ -70,30 +69,20 @@ public class CredentialsBean implements Serializable {
@PostConstruct
public void init() {
log.debug("CredentialsBean created");
if (!conversation.isTransient()) {
conversation.end();
}
sourceCredentials = new Credentials();
tapSchemaCredentials = new Credentials();
}
public void login() {
if (adminPassword != null && adminPassword.equals(ccBean.getPassword())) {
loggedIn = true;
} else {
FacesContext.getCurrentInstance().addMessage("main:password", new FacesMessage("Invalid credentials"));
}
}
for (UserConfiguration u : config.getData().getUsers()) {
public String getLoginError() {
return loginError;
}
}
public List getSavedCredentials() {
return ccBean.getConfig().getCredentialsConfiguration().getCredentialsInfo();
return user.getUserConfiguration().getCredentialsInfo();
}
public void editCredentials(Credentials credentials, int index) {
......@@ -113,21 +102,20 @@ public class CredentialsBean implements Serializable {
separateCredentials = false;
this.sourceCredentials = new Credentials();
this.tapSchemaCredentials = new Credentials();
currentEditingRow = ccBean.getConfig().getCredentialsConfiguration().getCredentialsInfo().size();
currentEditingRow = getSavedCredentials().size();
}
public String loginWithSingleCredentials(Credentials credentials) {
log.debug("Login with single credentials");
LOG.debug("Login with single credentials");
return loginWithDBWrapper(new DBWrapper(credentials));
}
public String loginWithSeparatedCredentials(Credentials sourceCredentials, Credentials tapSchemaCredentials) {
log.debug("Login with separated credentials");
LOG.debug("Login with separated credentials");
return loginWithDBWrapper(new DBWrapper(sourceCredentials, tapSchemaCredentials));
}
private String loginWithDBWrapper(DBWrapper dbWrapper) {
loginError = null;
try {
dbWrapper.testConnections();
......@@ -136,33 +124,31 @@ public class CredentialsBean implements Serializable {
schemaSelectionBean.setDbWrapper(dbWrapper);
return "schemaSelection.xhtml?faces-redirect=true";
} catch (SQLException e) {
log.error("Exception caught", e);
loginError = "Connection error: " + e.getMessage();
LOG.error("Exception caught", e);
//loginError = "Connection error: " + e.getMessage();
return null;
}
}
public void removeCredentials(int index) throws IOException {
ccBean.getConfig().getCredentialsConfiguration().getCredentialsInfo().remove(index);
ccBean.updateConfigurationFile();
getSavedCredentials().remove(index);
config.updateConfigurationFile();
}
public void saveCredentialsEdited() throws IOException {
List credentialsList = ccBean.getConfig().getCredentialsConfiguration().getCredentialsInfo();
if (currentEditingRow < credentialsList.size()) {
credentialsList.remove(currentEditingRow);
if (currentEditingRow < getSavedCredentials().size()) {
getSavedCredentials().remove(currentEditingRow);
}
if (separateCredentials) {
SeparateCredentials sc = new SeparateCredentials(sourceCredentials, tapSchemaCredentials);
credentialsList.add(currentEditingRow, sc);
getSavedCredentials().add(currentEditingRow, sc);
} else {
credentialsList.add(currentEditingRow, sourceCredentials);
getSavedCredentials().add(currentEditingRow, sourceCredentials);
}
ccBean.updateConfigurationFile();
config.updateConfigurationFile();
}
public boolean isSeparateCredentials() {
......@@ -189,27 +175,11 @@ public class CredentialsBean implements Serializable {
this.tapSchemaCredentials = tapSchemaCredentials;
}
public String getAdminPassword() {
return adminPassword;
}
public void setAdminPassword(String adminPassword) {
this.adminPassword = adminPassword;
}
public boolean isLoggedIn() {
return loggedIn;
}
public void setLoggedIn(boolean loggedIn) {
this.loggedIn = loggedIn;
public boolean isCredentialsDialogOpened() {
return credentialsDialogOpened;
}
public String logout() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request.isRequestedSessionIdValid()) {
request.getSession().invalidate();
}
return "index.xhtml?faces-redirect=true";
public void setCredentialsDialogOpened(boolean credentialsDialogOpened) {
this.credentialsDialogOpened = credentialsDialogOpened;
}
}
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.IOException;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named
@RequestScoped
public class FirstSetup {
@Inject
ConfigurationData config;
private String adminUsername;
private String adminPassword;
private String adminPasswordConfirm;
public String createAdmin() throws IOException {
if (adminPassword.equals(adminPasswordConfirm)) {
UserConfiguration userConfig = new UserConfiguration();
userConfig.setUsername(adminUsername);
userConfig.setPassword(adminPassword);
userConfig.setRole("admin");
config.addUser(userConfig);
return "index.xhtml?faces-redirect=true";
} else {
FacesContext.getCurrentInstance().addMessage("admin-password-confirm", new FacesMessage("Passwords don't match"));
}
return null;
}
public String getAdminUsername() {
return adminUsername;
}
public void setAdminUsername(String adminUsername) {
this.adminUsername = adminUsername;
}
public String getAdminPassword() {
return adminPassword;
}
public void setAdminPassword(String adminPassword) {
this.adminPassword = adminPassword;
}
public String getAdminPasswordConfirm() {
return adminPasswordConfirm;
}
public void setAdminPasswordConfirm(String adminPasswordConfirm) {
this.adminPasswordConfirm = adminPasswordConfirm;
}
}
/*
* _____________________________________________________________________________
*
* INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
* Trieste INAF - IA2 Italian Center for Astronomical Archives
* _____________________________________________________________________________
*
* Copyright (C) 2016 Istituto Nazionale di Astrofisica
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License Version 3 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named
@RequestScoped
public class Login {
@Inject
private ConfigurationData config;
@Inject
private User user;
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String login() {
for (UserConfiguration u : config.getData().getUsers()) {
if (u.getUsername().equals(username) && u.getPassword().equals(password)) {
user.login(u);
return "credentialsEditing.xhtml?faces-redirect=true";
}
}
FacesContext.getCurrentInstance().addMessage("main", new FacesMessage("Invalid credentials"));
return null;
}
}
......@@ -24,7 +24,6 @@ package it.inaf.ia2.tsm.webapp;
import ari.ucidy.UCD;
import ari.ucidy.UCDParser;
import ari.ucidy.UCDWordList;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
......
......@@ -38,7 +38,7 @@ public class SearchUCDDialog implements Serializable {
private static final long serialVersionUID = -3503024742241865133L;
@Inject
WebAppConfigurationBean config;
ConfigurationData config;
private boolean manualInsertion;
......@@ -151,14 +151,14 @@ public class SearchUCDDialog implements Serializable {
public void setUCDManualText(String UCDManualText) {
this.UCDManualText = UCDManualText;
}
public void validateManualUCD() {
if (UCDManualText == null || UCDManualText.isEmpty() || UCDManualText.trim().isEmpty()) {
parsedUCD = null;
} else {
parsedUCD = new ParsedUCD(UCDManualText, config.getConfig().getCustomUCDs());
}
}
//
// public void validateManualUCD() {
// if (UCDManualText == null || UCDManualText.isEmpty() || UCDManualText.trim().isEmpty()) {
// parsedUCD = null;
// } else {
// parsedUCD = new ParsedUCD(UCDManualText, config.getConfig().getCustomUCDs());
// }
// }
public String getUCDRegExp() {
return SearchUCD.REG_EXP_UCD;
......
......@@ -23,13 +23,16 @@
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.api.Credentials;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
/**
*
* @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
*/
public class SeparateCredentials {
public class SeparateCredentials implements Serializable {
private static final long serialVersionUID = 2108950341601128938L;
private Credentials sourceCredentials;
private Credentials tapSchemaCredentials;
......
......@@ -22,6 +22,8 @@
*/
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.webapp.env.CustomPartialResponseWriter;
import it.inaf.ia2.tsm.webapp.env.JSUpdateHandler;
import it.inaf.ia2.tsm.api.contract.ChildEntity;
import it.inaf.ia2.tsm.api.contract.Column;
import it.inaf.ia2.tsm.api.contract.EntitiesContainer;
......
package it.inaf.ia2.tsm.webapp;
import ari.ucidy.UCD;
import ari.ucidy.UCDParser;
import it.inaf.ia2.tsm.webapp.xmlconfig.UCDConfiguration;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named("ucdEditor")
@SessionScoped
public class UCDEditor implements Serializable {
private static final long serialVersionUID = -9117203239681234534L;
@Inject
private ConfigurationData config;
@Inject
private User user;
private boolean viewExisting;
private UCDConfiguration newUCDConfiguration;
private String invalidUCDMessage;
private List<UCDConfiguration> customUCDs;
public void openDialog() {
viewExisting = true;
newUCDConfiguration = new UCDConfiguration();
invalidUCDMessage = null;
// Retriving UCD list of current user
for (UserConfiguration u : config.getData().getUsers()) {
if (u.getUsername().equals(user.getUsername())) {
customUCDs = u.getCustomUCDs();
break;
}
}
}
public boolean isViewExisting() {
return viewExisting;
}
public void setViewExisting(boolean viewExisting) {
this.viewExisting = viewExisting;
invalidUCDMessage = null;
}
public UCDConfiguration getNewUCDConfiguration() {
return newUCDConfiguration;
}
public List<UCDConfiguration> getCustomUCDs() {
return customUCDs;
}
public void addUCD() throws IOException {
invalidUCDMessage = null;
if (newUCDConfiguration.getWord() == null || newUCDConfiguration.getWord().isEmpty()) {
invalidUCDMessage = "Insert the UCD word";
return;
}
// Check if word syntax is valid
UCD ucd = UCDParser.parseUCD(newUCDConfiguration.getWord());
if (ucd.size() != 1 || !ucd.getWord(0).valid) {
invalidUCDMessage = "Invalid UCD word syntax";
return;
}
customUCDs.add(newUCDConfiguration);
newUCDConfiguration = new UCDConfiguration();
config.updateConfigurationFile();
}
public void removeUCD(int index) throws IOException {
customUCDs.remove(index);
config.updateConfigurationFile();
}
/**
* For some reason getCurrentInstance().addMessage doesn't work inside the
* dialog, so this field has been added for setting error message manually.
*/
public String getInvalidUCDMessage() {
return invalidUCDMessage;
}
}
/*
* _____________________________________________________________________________
*
* INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
* Trieste INAF - IA2 Italian Center for Astronomical Archives
* _____________________________________________________________________________
*
* Copyright (C) 2016 Istituto Nazionale di Astrofisica
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License Version 3 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named
@SessionScoped
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
ConfigurationData config;
private UserConfiguration userConfiguration;
public String getUsername() {
return userConfiguration == null ? null : userConfiguration.getUsername();
}
public boolean isAdmin() {
return userConfiguration != null && "admin".equals(userConfiguration.getRole());
}
public boolean isLoggedIn() {
return userConfiguration != null;
}
public void login(UserConfiguration userConfiguration) {
this.userConfiguration = userConfiguration;
}
public String logout() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request.isRequestedSessionIdValid()) {
request.getSession().invalidate();
}
return "index.xhtml?faces-redirect=true";
}
public UserConfiguration getUserConfiguration() {
return userConfiguration;
}
}
......@@ -14,7 +14,7 @@ public class Version {
public final static String NUMBER;
static {
try (InputStream is = TSMResourceHandlerWrapper.class.getClassLoader().getResourceAsStream("version.txt")) {
try (InputStream is = Version.class.getClassLoader().getResourceAsStream("version.txt")) {
Scanner s = new Scanner(is).useDelimiter("\\A");
NUMBER = s.next().trim();
} catch (IOException e) {
......
/*
* _____________________________________________________________________________
*
* INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
* Trieste INAF - IA2 Italian Center for Astronomical Archives
* _____________________________________________________________________________
*
* Copyright (C) 2016 Istituto Nazionale di Astrofisica
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License Version 3 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp.checker;
import it.inaf.ia2.tsm.webapp.ConfigurationData;
import it.inaf.ia2.tsm.webapp.xmlconfig.Configuration;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named
@RequestScoped
public class FirstSetupChecker {
@Inject
private ConfigurationData config;
public boolean isFirstSetupCompleted() {
Configuration c = config.getData();
for (UserConfiguration user : c.getUsers()) {
if ("admin".equals(user.getRole())) {
return true;
}
}
return false;
}
public void checkFromIndex() {
if (!isFirstSetupCompleted()) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "/setup.xhtml?faces-redirect=true");
}
}
public void checkFromFirstSetup() {
if (isFirstSetupCompleted()) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "/index.xhtml?faces-redirect=true");
}
}
}
package it.inaf.ia2.tsm.webapp.checker;
import it.inaf.ia2.tsm.webapp.User;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
/**
*
* @author Sonia Zorba <zorba at oats.inaf.it>
*/
@Named
@RequestScoped
public class LoggedInChecker {
@Inject
private User user;
public void checkFromIndex() {
if (user.isLoggedIn()) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "/credentialsEditing.xhtml?faces-redirect=true");
}
}
public void checkFromNonIndex() {
if (!user.isLoggedIn()) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "/index.xhtml?faces-redirect=true");
}
}
}
......@@ -20,7 +20,7 @@
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
package it.inaf.ia2.tsm.webapp.env;
import java.util.Set;
import javax.ws.rs.core.Application;
......@@ -45,6 +45,7 @@ public class ApplicationConfig extends Application {
* out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(it.inaf.ia2.tsm.webapp.KeepAliveResource.class);
resources.add(it.inaf.ia2.tsm.webapp.CredentialsDialogResource.class);
resources.add(it.inaf.ia2.tsm.webapp.env.KeepAliveResource.class);
}
}
......@@ -20,7 +20,7 @@
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
package it.inaf.ia2.tsm.webapp.env;
import java.io.IOException;
import java.util.Collections;
......
......@@ -20,7 +20,7 @@
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
package it.inaf.ia2.tsm.webapp.env;
import javax.faces.context.FacesContext;
import javax.faces.context.PartialViewContext;
......
......@@ -20,7 +20,7 @@
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
package it.inaf.ia2.tsm.webapp.env;
import javax.faces.context.PartialResponseWriter;
import javax.faces.context.PartialViewContext;
......
......@@ -20,7 +20,7 @@
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package it.inaf.ia2.tsm.webapp;
package it.inaf.ia2.tsm.webapp.env;
/**
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment