securis/src/main/java/net/curisit/securis/MainApp.java
.. .. @@ -1,6 +1,7 @@ 1 1 package net.curisit.securis; 2 2 3 3 import java.net.URI; 4 +import java.util.Properties;4 5 5 6 import javax.inject.Inject; 6 7 import javax.inject.Named; .. .. @@ -29,6 +30,8 @@ 29 30 import com.google.inject.Injector; 30 31 import com.google.inject.Key; 31 32 import com.google.inject.name.Names; 33 +import com.google.inject.persist.PersistFilter;34 +import com.google.inject.persist.jpa.JpaPersistModule;32 35 33 36 public class MainApp { 34 37 .. .. @@ -44,8 +47,17 @@ 44 47 public static void main(String[] args) throws Exception { 45 48 log.info("SeCuris init..."); 46 49 47 - injector = Guice.createInjector(new SecurisModule(), new RequestsModule());48 - // createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule());50 + SecurisModule securisModule = new SecurisModule();51 + JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");52 + Properties props = new Properties();53 + props.put("javax.persistence.jdbc.password", securisModule.getPassword());54 + props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));55 + log.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());56 + jpaPersistModule.properties(props);57 +58 + injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);59 + // injector.getInstance(JpaInitializer.class);60 +49 61 startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri")))); 50 62 while (true) { 51 63 Thread.currentThread().sleep(100); .. .. @@ -63,7 +75,7 @@ 63 75 context.setInitParameter("resteasy.role.based.security", "true"); 64 76 context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName()); 65 77 context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null); 66 -78 + context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);67 79 ServletHolder sh = new ServletHolder(HttpServletDispatcher.class); 68 80 sh.setName("resteasy"); 69 81 context.addServlet(sh, "/*"); .. .. @@ -97,9 +109,6 @@ 97 109 98 110 } 99 111 100 - /**101 - * User: Nuwan.N.Bandara102 - */103 112 @Provider 104 113 public static class DefaultExceptionHandler implements ExceptionMapper<Exception> { 105 114 .. .. @@ -122,16 +131,3 @@ 122 131 } 123 132 124 133 } 125 -126 -/*127 - * Constraint constraint = new Constraint(); constraint.setName(Constraint.__FORM_AUTH);; constraint.setRoles(new String[]{"user","admin","moderator"}); constraint.setAuthenticate(true);128 - *129 - * ConstraintMapping constraintMapping = new ConstraintMapping(); constraintMapping.setConstraint(constraint); constraintMapping.setPathSpec("/*");130 - *131 - * ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); securityHandler.addConstraintMapping(constraintMapping); HashLoginService loginService = new HashLoginService(); loginService.putUser("username", new132 - * Password("password"), new String[] {"user"}); securityHandler.setLoginService(loginService);133 - *134 - * FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false); securityHandler.setAuthenticator(authenticator);135 - *136 - * context.setSecurityHandler(securityHandler);137 - */securis/src/main/java/net/curisit/securis/dao/UserDao.java
.. .. @@ -0,0 +1,39 @@ 1 +package net.curisit.securis.dao;2 +3 +import java.util.Date;4 +5 +import javax.inject.Inject;6 +import javax.inject.Provider;7 +import javax.inject.Singleton;8 +import javax.persistence.EntityManager;9 +10 +import net.curisit.integrity.commons.Utils;11 +import net.curisit.securis.db.User;12 +13 +@Singleton14 +public class UserDao {15 +16 + @Inject17 + public UserDao() {18 + }19 +20 + @Inject21 + Provider<EntityManager> emProvider;22 +23 + @com.google.inject.persist.Transactional24 + public User test(String username) {25 + EntityManager em = emProvider.get();26 + User user = new User();27 + user.setUsername(username);28 + user.setFullName("Rob San");29 + user.setPassword(Utils.sha256("rob"));30 + user.setLang("en");31 + user.setCreationTimestamp(new Date());32 + user.setRoles(User.Rol.ADMIN | User.Rol.ADVANCE);33 + user.setShortName("Rob");34 + em.persist(user);35 + User u2 = em.find(User.class, username);36 + return u2;37 + }38 +39 +}securis/src/main/java/net/curisit/securis/db/License.java
.. .. @@ -5,6 +5,7 @@ 5 5 6 6 import javax.persistence.Column; 7 7 import javax.persistence.Entity; 8 +import javax.persistence.GeneratedValue;8 9 import javax.persistence.Id; 9 10 import javax.persistence.JoinColumn; 10 11 import javax.persistence.ManyToOne; .. .. @@ -24,12 +25,13 @@ 24 25 @Entity 25 26 @Table(name = "license") 26 27 @NamedQueries( 27 - { @NamedQuery(name = "list-licenses", query = "SELECT pa FROM Pack pa") })28 + { @NamedQuery(name = "list-licenses", query = "SELECT l FROM License l") })28 29 public class License implements Serializable { 29 30 30 31 private static final long serialVersionUID = 1L; 31 32 32 33 @Id 34 + @GeneratedValue33 35 private int id; 34 36 35 37 private String code; .. .. @@ -42,8 +44,8 @@ 42 44 private Organization organization; 43 45 44 46 @ManyToOne 45 - @JoinColumn(name = "license_type_id")46 - private LicenseType licenseType;47 + @JoinColumn(name = "pack_id")48 + private Pack pack;47 49 48 50 @ManyToOne 49 51 @JoinColumn(name = "created_by") .. .. @@ -79,14 +81,6 @@ 79 81 this.organization = organization; 80 82 } 81 83 82 - public LicenseType getLicenseType() {83 - return licenseType;84 - }85 -86 - public void setLicenseType(LicenseType licenseType) {87 - this.licenseType = licenseType;88 - }89 -90 84 public User getCreatedBy() { 91 85 return createdBy; 92 86 } .. .. @@ -103,4 +97,12 @@ 103 97 this.numLicenses = numLicenses; 104 98 } 105 99 100 + public Pack getPack() {101 + return pack;102 + }103 +104 + public void setPack(Pack pack) {105 + this.pack = pack;106 + }107 +106 108 } securis/src/main/java/net/curisit/securis/db/Organization.java
.. .. @@ -49,7 +49,7 @@ 49 49 joinColumns = 50 50 { @JoinColumn(name = "organization_id", referencedColumnName = "id") }, // 51 51 inverseJoinColumns = 52 - { @JoinColumn(name = "user_id", referencedColumnName = "id") })52 + { @JoinColumn(name = "user_id", referencedColumnName = "username") })53 53 private List<User> users; 54 54 55 55 @ManyToOne securis/src/main/java/net/curisit/securis/db/Pack.java
.. .. @@ -10,7 +10,6 @@ 10 10 import javax.persistence.FetchType; 11 11 import javax.persistence.Id; 12 12 import javax.persistence.JoinColumn; 13 -import javax.persistence.JoinTable;14 13 import javax.persistence.ManyToOne; 15 14 import javax.persistence.NamedQueries; 16 15 import javax.persistence.NamedQuery; .. .. @@ -55,12 +54,7 @@ 55 54 @JoinColumn(name = "created_by") 56 55 private User createdBy; 57 56 58 - @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)59 - @JoinTable(name = "license", //60 - joinColumns =61 - { @JoinColumn(name = "pack_id") }, //62 - inverseJoinColumns =63 - { @JoinColumn(name = "id") })57 + @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pack")64 58 private Set<License> licenses; 65 59 66 60 private int numLicenses; securis/src/main/java/net/curisit/securis/db/User.java
.. .. @@ -35,12 +35,13 @@ 35 35 36 36 @Id 37 37 private String username; 38 +38 39 private String password; 39 40 @JsonProperty(value = "short_name") 40 41 @Column(name = "short_name") 41 42 private String shortName; 42 43 43 - private int role;44 + private int roles;44 45 45 46 @JsonProperty(value = "full_name") 46 47 @Column(name = "full_name") .. .. @@ -61,7 +62,7 @@ 61 62 @ManyToMany 62 63 @JoinTable(name = "user_organization", // 63 64 joinColumns = 64 - { @JoinColumn(name = "user_id", referencedColumnName = "id") }, //65 + { @JoinColumn(name = "user_id", referencedColumnName = "username") }, //65 66 inverseJoinColumns = 66 67 { @JoinColumn(name = "organization_id", referencedColumnName = "id") } // 67 68 ) .. .. @@ -83,12 +84,12 @@ 83 84 this.password = password; 84 85 } 85 86 86 - public int getRole() {87 - return role;87 + public int getRoles() {88 + return roles;88 89 } 89 90 90 - public void setRole(int role) {91 - this.role = role;91 + public void setRoles(int roles) {92 + this.roles = roles;92 93 } 93 94 94 95 public String getFullName() { securis/src/main/java/net/curisit/securis/services/BasicServices.java
.. .. @@ -3,15 +3,21 @@ 3 3 import java.net.URI; 4 4 import java.util.Date; 5 5 6 +import javax.inject.Inject;7 +import javax.inject.Singleton;6 8 import javax.servlet.http.HttpServletRequest; 7 9 import javax.servlet.http.HttpSession; 8 10 import javax.ws.rs.GET; 9 11 import javax.ws.rs.Path; 10 12 import javax.ws.rs.Produces; 13 +import javax.ws.rs.QueryParam;11 14 import javax.ws.rs.core.Context; 12 15 import javax.ws.rs.core.MediaType; 13 16 import javax.ws.rs.core.Response; 14 17 import javax.ws.rs.core.UriBuilder; 18 +19 +import net.curisit.securis.dao.UserDao;20 +import net.curisit.securis.db.User;15 21 16 22 import org.slf4j.Logger; 17 23 import org.slf4j.LoggerFactory; .. .. @@ -22,10 +28,12 @@ 22 28 * @author roberto <roberto.sanchez@curisit.net> 23 29 */ 24 30 @Path("/") 31 +@Singleton25 32 public class BasicServices { 26 33 27 34 private static final Logger log = LoggerFactory.getLogger(BasicServices.class); 28 35 36 + @Inject29 37 public BasicServices() { 30 38 } 31 39 .. .. @@ -54,4 +62,17 @@ 54 62 return Response.ok().entity("License server running OK. Date: " + new Date()).build(); 55 63 } 56 64 65 + @Inject66 + UserDao userDao;67 +68 + @GET69 + @Path("/test")70 + @Produces(71 + { MediaType.TEXT_PLAIN })72 + public Response test(@QueryParam("u") String username) {73 + User user = userDao.test(username);74 +75 + return Response.ok().entity("User: " + user).build();76 + }77 +57 78 } securis/src/main/resources/META-INF/persistence.xml
.. .. @@ -0,0 +1,21 @@ 1 +<?xml version="1.0" encoding="UTF-8"?>2 +<persistence version="2.0"3 + xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"4 + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">5 + <persistence-unit name="localdb" transaction-type="RESOURCE_LOCAL">6 + <description>SeCuris LocalDB</description>7 + <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>8 +9 +<!-- <class>net.curisit.securis.db.UserSettingsUnits</class> -->10 +11 +12 + <properties>13 + <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />14 + <property name="javax.persistence.jdbc.url"15 + value="jdbc:h2:/tmp/.CurisIntegrity/db/curissecuris" />16 + <property name="javax.persistence.jdbc.user" value="curis" />17 + <property name="javax.persistence.jdbc.password" value="53curi5" />18 + <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />19 + </properties>20 + </persistence-unit>21 +</persistence>