package io.fathom.cloud.identity.commands; import io.fathom.cloud.CloudException; import io.fathom.cloud.WellKnownRoles; import io.fathom.cloud.commands.TypedCmdlet; import io.fathom.cloud.identity.LoginService; import io.fathom.cloud.identity.model.AuthenticatedUser; import io.fathom.cloud.identity.services.IdentityService; import io.fathom.cloud.identity.services.IdentityService.UserCreationData; import io.fathom.cloud.protobuf.IdentityModel.DomainData; import io.fathom.cloud.protobuf.IdentityModel.ProjectData; import io.fathom.cloud.protobuf.IdentityModel.UserData; import javax.inject.Inject; import org.kohsuke.args4j.Option; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UserCreateCmdlet extends TypedCmdlet { public UserCreateCmdlet() { super("id-user-create"); } private static final Logger log = LoggerFactory.getLogger(UserCreateCmdlet.class); @Option(name = "-u", usage = "username", required = true) public String username; @Option(name = "-p", usage = "password", required = true) public String password; @Inject IdentityService identityService; @Inject LoginService loginService; @Override protected UserData run0() throws CloudException { log.info("Creating user: {}", username); DomainData domain = identityService.getDefaultDomain(); if (domain == null) { throw new UnsupportedOperationException(); } UserData.Builder userBuilder = UserData.newBuilder(); userBuilder.setName(username); // userBuilder.setEmail(username); userBuilder.setEnabled(true); UserData user = identityService.createUser(new UserCreationData(domain, userBuilder, password)); Long projectId = null; AuthenticatedUser authenticatedUser = loginService.authenticate(projectId, username, password); if (authenticatedUser == null) { throw new IllegalStateException(); } boolean CREATE_PROJECT = false; if (CREATE_PROJECT) { ProjectData.Builder projectBuilder = ProjectData.newBuilder(); projectBuilder.setName("default"); projectBuilder.setDomainId(domain.getId()); ProjectData project = identityService.createProject(projectBuilder, authenticatedUser, WellKnownRoles.ROLE_ID_ADMIN); if (project == null) { throw new IllegalStateException(); } } return user; } }