public void merge(final User otherUser) { for (final LinkedAccount acc : otherUser.linkedAccounts) { this.linkedAccounts.add(LinkedAccount.create(acc)); } // do all other merging stuff here - like resources, etc. // deactivate the merged user that got added to this one otherUser.active = false; MorphiaObject.datastore.save(otherUser); MorphiaObject.datastore.save(this); }
public static User create(final AuthUser authUser) { final User user = new User(); user.roles = Collections.singletonList(SecurityRole.findByRoleName(controllers.Application.USER_ROLE)); // user.permissions = new ArrayList<UserPermission>(); // user.permissions.add(UserPermission.findByValue("printers.edit")); user.active = true; user.lastLogin = new Date(); user.linkedAccounts = Collections.singletonList(LinkedAccount.create(authUser)); if (authUser instanceof EmailIdentity) { final EmailIdentity identity = (EmailIdentity) authUser; // Remember, even when getting them from FB & Co., emails should be // verified within the application as a security breach there might // break your security as well! user.email = identity.getEmail(); user.emailValidated = false; } if (authUser instanceof NameIdentity) { final NameIdentity identity = (NameIdentity) authUser; final String name = identity.getName(); if (name != null) { user.name = name; } } if (authUser instanceof FirstLastNameIdentity) { final FirstLastNameIdentity identity = (FirstLastNameIdentity) authUser; final String firstName = identity.getFirstName(); final String lastName = identity.getLastName(); if (firstName != null) { user.firstName = firstName; } if (lastName != null) { user.lastName = lastName; } } MorphiaObject.datastore.save(user); // user.saveManyToManyAssociations("roles"); // user.saveManyToManyAssociations("permissions"); return user; }