/** * {@inheritDoc} * * @see ch.entwine.weblounge.common.security.DirectoryService#loadUser(java.lang.String, * ch.entwine.weblounge.common.site.Site) */ public User loadUser(String login, Site site) { JpaAccount jpaAccount = null; // Load the user account and the user try { jpaAccount = persistence.getAccount(site.getIdentifier(), login, true); } catch (Throwable e) { logger.error("Error loading user '{}' from the database: {}", login, e.getMessage()); return null; } // Is that user known if (jpaAccount == null) { logger.debug("User '{}' is not known in site '{}'", login, site.getIdentifier()); return null; } // Create the weblounge user WebloungeUser user = new WebloungeUserImpl(login, site.getIdentifier()); // Standard attributes like first name, name, ... if (StringUtils.isNotBlank(jpaAccount.getFirstname())) user.setFirstName(jpaAccount.getFirstname()); if (StringUtils.isNotBlank(jpaAccount.getLastname())) user.setLastName(jpaAccount.getLastname()); if (StringUtils.isNotBlank(jpaAccount.getEmail())) user.setEmail(jpaAccount.getEmail()); if (StringUtils.isNotBlank(jpaAccount.getInitials())) user.setInitials(jpaAccount.getInitials()); // Password user.addPrivateCredentials(new PasswordImpl(jpaAccount.getPassword(), DigestType.md5)); // Roles for (JpaRole r : jpaAccount.getRoles()) { // Make sure weblounge roles get special treatment in order // to support role inheritance. Other directories will need // to implement this through a LoginListener implementation if (Security.SYSTEM_CONTEXT.equals(r.getContext())) { if (SYSTEMADMIN.getIdentifier().equals(r.getRolename())) { user.addPublicCredentials(SYSTEMADMIN); } else if (SITEADMIN.getIdentifier().equals(r.getRolename())) { user.addPublicCredentials(SITEADMIN); } else if (PUBLISHER.getIdentifier().equals(r.getRolename())) { user.addPublicCredentials(PUBLISHER); } else if (EDITOR.getIdentifier().equals(r.getRolename())) { user.addPublicCredentials(EDITOR); } else if (GUEST.getIdentifier().equals(r.getRolename())) { user.addPublicCredentials(GUEST); } } else { user.addPublicCredentials(new RoleImpl(r.getContext(), r.getRolename())); } } return user; }
@Override public EDITOR demarshall(CONTEXT context, JsonPath jsonPath) { EDITOR editor = context.createEditor(); editor.setId(jsonPath.getString("id")); editor.setPlatform(jsonPath.getString("platform")); editor.setEnabled(jsonPath.getBoolean("enabled")); editor.setOperatingSystem(jsonPath.getString("operatingSystem")); editor.setOsVersion(jsonPath.getString("osVersion")); editor.setAlias(jsonPath.getString("alias")); editor.setDeviceType(jsonPath.getString("deviceType")); editor.setDeviceToken(jsonPath.getString("deviceToken")); editor.setSimplePushEndpoint(jsonPath.getString("simplePushEndpoint")); HashSet<String> categories = new HashSet<String>(); List<String> jsonCategories = jsonPath.getList("categories"); if (jsonCategories != null) { for (String jsonCategory : jsonCategories) { categories.add(jsonCategory); } } editor.setCategories(categories); return editor; }