@Override public User createNewEntity() { return new User(); }
public void setPassword (User u, String clearpass, User author, HashVersion v) throws Exception { if (u.getPasswordHash() != null) u.addPasswordHistoryValue(u.getPasswordHash()); switch (v) { case ZERO: setV0Password (u, clearpass); break; case ONE: setV1Password (u, clearpass); break; } u.setPasswordChanged(new Date()); u.setForcePasswordChange(false); RevisionManager revmgr = new RevisionManager(db); if (author == null) author = u; revmgr.createRevision(author, "user." + u.getId(), "Password changed"); db.session().saveOrUpdate(u); }
private void setV0Password (User u, String clearpass) throws Exception { assertNotNull(clearpass, "Invalid password"); u.setPasswordHash(HashVersion.ZERO.hash(Long.toString(u.getId()), clearpass, null)); } }
User u = mgr.getUserByNick(args[1], true); if (u != null) { cli.println ("User already exists" + (u.isDeleted() ? " (soft-deleted)" : "")); return; User user = new User(); user.setNick (args[1]); user.setName (line.getOptionValue('N')); db.session().save(user); if (line.hasOption('p')) { Collections.addAll(user.getRoles(), rr); user.setActive(true); db.commit(); cli.println ("User '" + user.getNickAndId() + "' created"); } catch (Exception e) { cli.println (e.getMessage());
private void createUser() throws Exception { db.beginTransaction(); User user = new User(); user.setNick("admin"); user.setName("User Administrator"); user.setActive(true); db.session().save(user); UserManager mgr = new UserManager(db, HashVersion.ZERO); mgr.setPassword(user, "test", null); RealmManager rmgr = new RealmManager(db); Realm testRealm = rmgr.getRealmByName("TEST"); Realm prodRealm = rmgr.getRealmByName("PROD"); Role r = createRole(db, null, "admin", "login", "admin"); user.getRoles().add(r); // user permissions: `login`, `admin`, `role.admin` Role r1 = createRole (db, testRealm, "tester", "testread", "testwrite"); r1.setParent(r); user.getRoles().add(r1); // adds permissions: `TEST.testread`, `TEST.testwrite` db.commit(); } public void checkUser() throws Exception {
User u = mgr.getUserByNick("admin"); assertNotNull("User can't be null", u); assertTrue("User has 'login' permission", u.hasPermission("login")); assertTrue("User has 'admin' permission", u.hasPermission("admin")); assertTrue("User has 'admin' role", u.hasPermission("role.admin")); assertTrue("User has 'TEST:testread", u.hasPermission("TEST:testread")); assertTrue("User has 'TEST:admin", u.hasPermission("TEST:admin")); u.hasAllPermissions( new String[] {"TEST:role.tester", "TEST:testread", "TEST:testwrite", "TEST:admin", "TEST:login"}) ); assertTrue("User has all permissions", u.hasAllPermissions(new String[]{"login", "admin", "role.admin"})); assertTrue("User has any permissions", u.hasAnyPermission(new String[]{"nologin", "admin", "role.admin"})); assertFalse("User don't have 'superuser' permission", u.hasPermission("superuser")); assertEquals("User hash is correct", "ee89026a6c5603c51b4504d218ac60f6874b7750", u.getPasswordHash()); assertFalse("Password has to be in history", mgr.checkNewPassword(u, "test")); mgr.upgradePassword(u, "test"); assertNotEquals("User hash has changed", "ee89026a6c5603c51b4504d218ac60f6874b7750", u.getPasswordHash()); assertTrue("User password is still 'test'", mgr.checkPassword(u, "test")); assertNotEquals("User hash has changed", "ee89026a6c5603c51b4504d218ac60f6874b7750", u.getPasswordHash()); assertFalse("Password has to be in history", mgr.checkNewPassword(u, "test")); mgr.setPassword(u, "test1"); mgr.setPassword(u, "test"); assertTrue("User password is back to 'test'", mgr.checkPassword(u, "test")); assertEquals ("History size is ", 5, u.getPasswordhistory().size()); db.commit();
public String resetUserPassword (User user) { String generatedPassword = PasswordGenerator.generateRandomPassword(); try { DB.execWithTransaction((db) -> { db.session().refresh(user); user.getPasswordhistory(); // hack to avoid LazyInitialization UserManager mgr = new UserManager(db); try { mgr.setPassword(user, generatedPassword); } catch (BLException e) { getApp().displayNotification("errorMessage.resetPassword"); return false; } user.setForcePasswordChange(true); user.setLoginAttempts(0); // reset login attempts db.session().saveOrUpdate(user); return true; }); } catch (Exception e) { getApp().getLog().error(e); return null; } return generatedPassword; }
userUpdated = (boolean) DB.execWithTransaction((db) -> { UserManager mgr = new UserManager(db); User oldUser = (User) ((User)getOriginalEntity()).clone(); if (binder.writeBeanIfValid(getOriginalEntity())) { User user = (User) getOriginalEntity(); boolean passwordOK = false; boolean newPasswordOK = false; user.getPasswordhistory(); //to avoid lazy passwordOK = mgr.checkPassword(user, currentPass); newPasswordOK = mgr.checkNewPassword(user, newClearPass); String.valueOf(user.getId()), oldUser, user,
public boolean upgradePassword (User u, String clearpass) throws Exception { assertNotNull(clearpass, "Invalid pass"); String passwordHash = u.getPasswordHash(); assertNotNull(passwordHash, "Password is null"); HashVersion v = HashVersion.getVersion(passwordHash); if (v == HashVersion.ZERO && checkV0Password(passwordHash, u.getId(), clearpass)) { setPassword(u, clearpass, null, HashVersion.ONE); return true; } return false; }
/** * @param u the user * @param clearpass new password in clear * @return true if password is in PasswordHistory */ public boolean checkNewPassword (User u, String clearpass) throws Exception { if (checkPassword (u, clearpass)) { return false; // same password not allowed } for (PasswordHistory p : u.getPasswordhistory()) { HashVersion v = HashVersion.getVersion(p.getValue()); switch (v) { case ZERO: if (checkV0Password(p.getValue(), u.getId(), clearpass)) return false; case ONE: if (checkV1Password (p.getValue(), clearpass)) return false; } } return true; }
@Override public void updateEntity() throws BLException { String current = ""; String repeat = ""; if (passwordBinder != null) { current = currentPasswordField != null ? currentPasswordField.getValue() : ""; repeat = repeatPasswordField != null ? repeatPasswordField.getValue() : ""; } if (((UsersHelper)getHelper()).updateUser(getBinder(), current, repeat)){ getApp().displayNotification(getApp().getMessage("updated", getEntityName().toUpperCase())); if (getApp().getUser().equals(getInstance())) { getApp().getUser().setName(getInstance().getName()); getApp().getHeader().refresh(); } } else getApp().displayNotification(getApp().getMessage("notchanged")); }
@Override protected void addFields(Layout l) { super.addFields(l); selectedU = getInstance(); if (getInstance().getId() != null && getInstance().getId().equals(getApp().getUser().getId())) { changePassBtn = createChangePasswordButton(); l.addComponents(changePassBtn, createPasswordPanel()); } if (getInstance().hasPermission("sysadmin") && !isNewView()) { resetPassBtn = createResetPasswordButton(); l.addComponent(resetPassBtn); } }
@Override public boolean removeEntity() { //Users have a deleted flag, they are not completely removed. User t = (User) getOriginalEntity(); try { return t != null && (boolean) DB.execWithTransaction((db) -> { User user = db.session().get(User.class, t.getId()); if (user == null) return false; t.setDeleted(true); db.session().merge(t); addRevisionRemoved(db, getEntityName(), String.valueOf(t.getId())); return true; }); } catch (Exception e) { getApp().getLog().error(e); return false; } }
@Override public void exec(CLIContext cli, String[] args) throws Exception { if (args.length != 2) { cli.println("Usage: rmuser <user>"); return; } try (DB db = new DB()) { db.open(); db.beginTransaction(); UserManager mgr = new UserManager(db); User u = mgr.getUserByNick(args[1]); if (u != null) { u.setDeleted(true); } db.commit(); cli.println(u != null ? "User " + u.getNickAndId() + " has been deleted" : "User does not exist"); } catch (Exception e) { cli.println(e.getMessage()); } } }
public boolean saveUser (Binder binder, String clearPass) throws BLException { User u = (User) getOriginalEntity(); if (binder.writeBeanIfValid(getOriginalEntity())) { try { return (boolean) DB.execWithTransaction((db) -> { db.save(u); if (clearPass != null && !clearPass.isEmpty()) { UserManager mgr = new UserManager(db); try { mgr.setPassword(u, clearPass); } catch (BLException e) { return false; } addRevisionCreated(db, getEntityName(), u.getId().toString()); u.setForcePasswordChange(true); db.session().update(u); return true; } return false; }); } catch (Exception e) { getApp().getLog().error(e); return false; } } else { throw new BLException("Invalid user"); } }
@Override public String getHeaderSpecificTitle(Object entity) { return QI.getQI().getUser().getNick(); } }
@Override public void setGridGetters() { Grid<Consumer> g = getGrid(); g.addColumn(Consumer::getId).setId("id"); g.addColumn(consumer -> consumer.getRolesAsString()).setId("roles"); g.addColumn(Consumer::getStartDate).setId("startDate"); g.addColumn(Consumer::getEndDate).setId("endDate"); g.addColumn(consumer -> consumer.getUser().getNickAndId()).setId("user"); g.addColumn(Consumer::isActive).setId("active"); g.addColumn(Consumer::isDeleted).setId("deleted"); //select first item on user combobox userComboBox.setValue(userComboBox.getDataProvider().fetch(new Query<>()).findFirst().orElse(null)); }
@Override public String getItemId(Object item) { return String.valueOf(((User)item).getId()); }