Search in sources :

Example 1 with InviteUserComponent

use of io.imunity.furms.ui.components.InviteUserComponent in project furms by unity-idm.

the class SitesAdminsView method init.

private void init(String siteId) {
    InviteUserComponent inviteUser = new InviteUserComponent(userService::getAllUsers, () -> siteService.findAllAdministrators(siteId));
    MembershipChangerComponent membershipLayout = new MembershipChangerComponent(getTranslation("view.fenix-admin.sites.button.join"), getTranslation("view.fenix-admin.sites.button.demit"), () -> siteService.isCurrentUserAdminOf(siteId));
    membershipLayout.addJoinButtonListener(event -> {
        siteService.addAdmin(siteId, currentUserId);
        gridReload();
        inviteUser.reload();
    });
    membershipLayout.addDemitButtonListener(event -> {
        if (siteService.findAllAdministrators(siteId).size() > 1) {
            handleExceptions(() -> siteService.removeSiteUser(siteId, currentUserId));
            gridReload();
        } else {
            showErrorNotification(getTranslation("component.administrators.error.validation.remove"));
        }
        inviteUser.reload();
        membershipLayout.loadAppropriateButton();
    });
    inviteUser.addInviteAction(event -> doInviteAction(siteId, inviteUser, membershipLayout));
    UserContextMenuFactory userContextMenuFactory = UserContextMenuFactory.builder().withCurrentUserId(currentUserId).withRemoveUserAction(userId -> siteService.removeSiteUser(siteId, userId)).withPostRemoveUserAction(userId -> {
        membershipLayout.loadAppropriateButton();
        inviteUser.reload();
    }).withRemoveInvitationAction(invitationId -> {
        siteService.removeInvitation(siteId, invitationId);
        gridReload();
    }).withResendInvitationAction(invitationId -> {
        siteService.resendInvitation(siteId, invitationId);
        gridReload();
    }).build();
    UserGrid.Builder userGrid = UserGrid.defaultInit(userContextMenuFactory);
    grid = UsersGridComponent.defaultInit(() -> siteService.findAllAdministrators(siteId), () -> siteService.findSiteAdminInvitations(siteId), userGrid);
    Site site = handleExceptions(() -> siteService.findById(siteId)).flatMap(identity()).orElseThrow(IllegalStateException::new);
    ViewHeaderLayout viewHeaderLayout = new ViewHeaderLayout(getTranslation("view.sites.administrators.title", site.getName()), membershipLayout);
    getContent().add(viewHeaderLayout, inviteUser, grid);
}
Also used : VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory) LoggerFactory(org.slf4j.LoggerFactory) PageTitle(io.imunity.furms.ui.components.PageTitle) BeforeEvent(com.vaadin.flow.router.BeforeEvent) Route(com.vaadin.flow.router.Route) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) DuplicatedInvitationError(io.imunity.furms.api.validation.exceptions.DuplicatedInvitationError) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) SiteService(io.imunity.furms.api.sites.SiteService) UserService(io.imunity.furms.api.users.UserService) UsersGridComponent(io.imunity.furms.ui.components.administrators.UsersGridComponent) PersistentId(io.imunity.furms.domain.users.PersistentId) Logger(org.slf4j.Logger) MethodHandles(java.lang.invoke.MethodHandles) Site(io.imunity.furms.domain.sites.Site) BreadCrumbParameter(io.imunity.furms.ui.components.layout.BreadCrumbParameter) OptionalParameter(com.vaadin.flow.router.OptionalParameter) FenixAdminMenu(io.imunity.furms.ui.views.fenix.menu.FenixAdminMenu) UserAlreadyHasRoleError(io.imunity.furms.api.validation.exceptions.UserAlreadyHasRoleError) AuthzService(io.imunity.furms.api.authz.AuthzService) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent) Function.identity(java.util.function.Function.identity) Optional(java.util.Optional) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) Site(io.imunity.furms.domain.sites.Site) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory)

Example 2 with InviteUserComponent

use of io.imunity.furms.ui.components.InviteUserComponent in project furms by unity-idm.

the class ProjectView method loadPage1Content.

private void loadPage1Content(Project project) {
    InviteUserComponent inviteUser = new InviteUserComponent(() -> communityService.findAllUsers(project.getCommunityId()), () -> projectService.findAllAdmins(project.getCommunityId(), project.getId()));
    MembershipChangerComponent membershipLayout = new MembershipChangerComponent(getTranslation("view.community-admin.project.button.join"), getTranslation("view.community-admin.project.button.demit"), () -> projectService.isAdmin(project.getId()));
    UserContextMenuFactory userContextMenuFactory = UserContextMenuFactory.builder().withCurrentUserId(currentUserId).redirectOnCurrentUserRemoval().withRemoveUserAction(userId -> projectService.removeAdmin(project.getCommunityId(), project.getId(), userId)).withRemoveInvitationAction(invitationId -> {
        projectService.removeInvitation(project.getId(), invitationId);
        gridReload();
    }).withResendInvitationAction(invitationId -> {
        projectService.resendInvitation(project.getId(), invitationId);
        gridReload();
    }).withPostRemoveUserAction(userId -> {
        membershipLayout.loadAppropriateButton();
        inviteUser.reload();
    }).build();
    UserGrid.Builder userGrid = UserGrid.defaultInit(userContextMenuFactory);
    grid = UsersGridComponent.defaultInit(() -> projectService.findAllAdmins(project.getCommunityId(), project.getId()), () -> projectService.findAllAdminsInvitations(project.getId()), userGrid);
    membershipLayout.addJoinButtonListener(event -> {
        projectService.addAdmin(project.getCommunityId(), project.getId(), currentUserId);
        gridReload();
        inviteUser.reload();
    });
    membershipLayout.addDemitButtonListener(event -> {
        if (projectService.findAllAdmins(project.getCommunityId(), project.getId()).size() > 1) {
            handleExceptions(() -> projectService.removeAdmin(project.getCommunityId(), project.getId(), currentUserId));
            gridReload();
        } else {
            showErrorNotification(getTranslation("component.administrators.error.validation.remove"));
        }
        inviteUser.reload();
        membershipLayout.loadAppropriateButton();
    });
    ViewHeaderLayout headerLayout = new ViewHeaderLayout(getTranslation("view.community-admin.project.page.header", project.getName()), membershipLayout);
    inviteUser.addInviteAction(event -> doInviteAction(project, inviteUser, membershipLayout));
    page1.add(headerLayout, inviteUser, grid);
}
Also used : VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) Project(io.imunity.furms.domain.projects.Project) Component(com.vaadin.flow.component.Component) Tab(com.vaadin.flow.component.tabs.Tab) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory) LoggerFactory(org.slf4j.LoggerFactory) Div(com.vaadin.flow.component.html.Div) Tabs(com.vaadin.flow.component.tabs.Tabs) HashMap(java.util.HashMap) PageTitle(io.imunity.furms.ui.components.PageTitle) BeforeEvent(com.vaadin.flow.router.BeforeEvent) ADMINISTRATORS_PARAM(io.imunity.furms.ui.views.community.projects.ProjectConst.ADMINISTRATORS_PARAM) Route(com.vaadin.flow.router.Route) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) ArrayList(java.util.ArrayList) DuplicatedInvitationError(io.imunity.furms.api.validation.exceptions.DuplicatedInvitationError) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) FurmsTabs(io.imunity.furms.ui.components.FurmsTabs) ProjectAllocationService(io.imunity.furms.api.project_allocation.ProjectAllocationService) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) Map(java.util.Map) RouterLink(com.vaadin.flow.router.RouterLink) CommunityAdminMenu(io.imunity.furms.ui.views.community.CommunityAdminMenu) QueryParameters(com.vaadin.flow.router.QueryParameters) UsersGridComponent(io.imunity.furms.ui.components.administrators.UsersGridComponent) PersistentId(io.imunity.furms.domain.users.PersistentId) Logger(org.slf4j.Logger) ProjectAllocationComponent(io.imunity.furms.ui.views.community.projects.allocations.ProjectAllocationComponent) ALLOCATIONS_PARAM(io.imunity.furms.ui.views.community.projects.ProjectConst.ALLOCATIONS_PARAM) MethodHandles(java.lang.invoke.MethodHandles) PARAM_NAME(io.imunity.furms.ui.views.community.projects.ProjectConst.PARAM_NAME) BreadCrumbParameter(io.imunity.furms.ui.components.layout.BreadCrumbParameter) OptionalParameter(com.vaadin.flow.router.OptionalParameter) UserAlreadyHasRoleError(io.imunity.furms.api.validation.exceptions.UserAlreadyHasRoleError) List(java.util.List) AuthzService(io.imunity.furms.api.authz.AuthzService) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent) Function.identity(java.util.function.Function.identity) ProjectService(io.imunity.furms.api.projects.ProjectService) Optional(java.util.Optional) CommunityService(io.imunity.furms.api.communites.CommunityService) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory)

Example 3 with InviteUserComponent

use of io.imunity.furms.ui.components.InviteUserComponent in project furms by unity-idm.

the class UsersView method loadPageContent.

private void loadPageContent() {
    String projectId = getCurrentResourceId();
    project = projectService.findById(projectId).orElseThrow(() -> new IllegalStateException("Project not found: " + getCurrentResourceId()));
    currentUserId = authzService.getCurrentUserId();
    InviteUserComponent inviteUser = new InviteUserComponent(() -> projectService.findAllAdmins(project.getCommunityId(), project.getId()).stream().filter(IS_ELIGIBLE_FOR_PROJECT_MEMBERSHIP).collect(Collectors.toList()), () -> projectService.findAllUsers(project.getCommunityId(), project.getId()));
    membershipLayout = new MembershipChangerComponent(getTranslation("view.project-admin.users.button.join"), getTranslation("view.project-admin.users.button.demit"), () -> projectService.isUser(project.getId()));
    userService.findById(currentUserId).ifPresent(user -> membershipLayout.setEnabled(IS_ELIGIBLE_FOR_PROJECT_MEMBERSHIP.test(user)));
    UserContextMenuFactory userContextMenuFactory = UserContextMenuFactory.builder().withCurrentUserId(currentUserId).allowRemovalOfLastUser().withConfirmRemovalMessageKey("view.project-admin.users.remove.confirm").withConfirmSelfRemovalMessageKey("view.project-admin.users.remove.yourself.confirm").withRemoveInvitationAction(invitationId -> {
        projectService.removeInvitation(projectId, invitationId);
        gridReload();
    }).withResendInvitationAction(invitationId -> {
        projectService.resendInvitation(projectId, invitationId);
        gridReload();
    }).withRemoveUserAction(userId -> {
        try {
            projectService.removeUser(project.getCommunityId(), project.getId(), userId);
        } catch (UserInstallationOnSiteIsNotTerminalException e) {
            showErrorNotification(getTranslation("user.currently.de-installing"));
        }
    }).withPostRemoveUserAction(userId -> {
        membershipLayout.loadAppropriateButton();
        inviteUser.reload();
    }).addCustomContextMenuItem((UserGridItem userGridItem) -> new MenuButton(getTranslation("view.project-admin.users.requested.accept"), CHECK_CIRCLE), userGridItem -> {
        try {
            projectApplicationsService.accept(projectId, userGridItem.getFenixUserId().get());
            showSuccessNotification(getTranslation("view.project-admin.users.application.accept"));
        } catch (ApplicationNotExistingException e) {
            showErrorNotification(getTranslation("application.already.not.existing"));
        }
        grid.reloadGrid();
    }, userGridItem -> UserUIStatus.ACCESS_REQUESTED.equals(userGridItem.getStatus())).addCustomContextMenuItem((UserGridItem userGridItem) -> new MenuButton(getTranslation("view.project-admin.users.requested.reject"), CLOSE_CIRCLE), userGridItem -> {
        try {
            projectApplicationsService.remove(projectId, userGridItem.getFenixUserId().get());
            showSuccessNotification(getTranslation("view.project-admin.users.application.reject"));
        } catch (ApplicationNotExistingException e) {
            showErrorNotification(getTranslation("application.already.not.existing"));
        }
        grid.reloadGrid();
    }, userGridItem -> UserUIStatus.ACCESS_REQUESTED.equals(userGridItem.getStatus())).build();
    UserGrid.Builder userGrid = UserGrid.defaultInit(userContextMenuFactory);
    grid = UsersGridComponent.defaultInit(() -> projectService.findAllUsers(project.getCommunityId(), project.getId()), () -> projectService.findAllUsersInvitations(projectId), () -> projectApplicationsService.findAllApplyingUsers(projectId), userGrid);
    membershipLayout.addJoinButtonListener(event -> {
        projectService.addUser(project.getCommunityId(), project.getId(), currentUserId);
        grid.reloadGrid();
        inviteUser.reload();
    });
    membershipLayout.addDemitButtonListener(event -> {
        projectService.removeUser(project.getCommunityId(), project.getId(), currentUserId);
        grid.reloadGrid();
        inviteUser.reload();
        membershipLayout.loadAppropriateButton();
    });
    inviteUser.addInviteAction(event -> doInviteAction(inviteUser, projectId));
    ViewHeaderLayout headerLayout = new ViewHeaderLayout(getTranslation("view.project-admin.users.header", project.getName()), membershipLayout);
    getContent().add(headerLayout, inviteUser, grid);
}
Also used : Project(io.imunity.furms.domain.projects.Project) ResourceGetter.getCurrentResourceId(io.imunity.furms.ui.utils.ResourceGetter.getCurrentResourceId) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory) LoggerFactory(org.slf4j.LoggerFactory) MenuButton(io.imunity.furms.ui.components.MenuButton) PageTitle(io.imunity.furms.ui.components.PageTitle) Route(com.vaadin.flow.router.Route) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) DuplicatedInvitationError(io.imunity.furms.api.validation.exceptions.DuplicatedInvitationError) UserAlreadyAppliedForMembershipException(io.imunity.furms.api.validation.exceptions.UserAlreadyAppliedForMembershipException) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) UserUIStatus(io.imunity.furms.ui.components.administrators.UserUIStatus) UserService(io.imunity.furms.api.users.UserService) PROJECT_BASE_LANDING_PAGE(io.imunity.furms.domain.constant.RoutesConst.PROJECT_BASE_LANDING_PAGE) UsersGridComponent(io.imunity.furms.ui.components.administrators.UsersGridComponent) ProjectAdminMenu(io.imunity.furms.ui.views.project.ProjectAdminMenu) PersistentId(io.imunity.furms.domain.users.PersistentId) Logger(org.slf4j.Logger) ApplicationNotExistingException(io.imunity.furms.api.validation.exceptions.ApplicationNotExistingException) Predicate(java.util.function.Predicate) MethodHandles(java.lang.invoke.MethodHandles) ProjectApplicationsService(io.imunity.furms.api.applications.ProjectApplicationsService) FURMSUser(io.imunity.furms.domain.users.FURMSUser) Collectors(java.util.stream.Collectors) UserAlreadyHasRoleError(io.imunity.furms.api.validation.exceptions.UserAlreadyHasRoleError) AuthzService(io.imunity.furms.api.authz.AuthzService) AfterNavigationEvent(com.vaadin.flow.router.AfterNavigationEvent) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent) UserInstallationOnSiteIsNotTerminalException(io.imunity.furms.api.validation.exceptions.UserInstallationOnSiteIsNotTerminalException) ProjectService(io.imunity.furms.api.projects.ProjectService) CLOSE_CIRCLE(com.vaadin.flow.component.icon.VaadinIcon.CLOSE_CIRCLE) CHECK_CIRCLE(com.vaadin.flow.component.icon.VaadinIcon.CHECK_CIRCLE) UserGridItem(io.imunity.furms.ui.components.administrators.UserGridItem) FurmsLandingViewComponent(io.imunity.furms.ui.components.FurmsLandingViewComponent) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) NotificationUtils.showSuccessNotification(io.imunity.furms.ui.utils.NotificationUtils.showSuccessNotification) UserGrid(io.imunity.furms.ui.components.administrators.UserGrid) ApplicationNotExistingException(io.imunity.furms.api.validation.exceptions.ApplicationNotExistingException) MembershipChangerComponent(io.imunity.furms.ui.components.MembershipChangerComponent) MenuButton(io.imunity.furms.ui.components.MenuButton) UserInstallationOnSiteIsNotTerminalException(io.imunity.furms.api.validation.exceptions.UserInstallationOnSiteIsNotTerminalException) UserContextMenuFactory(io.imunity.furms.ui.components.administrators.UserContextMenuFactory) UserGridItem(io.imunity.furms.ui.components.administrators.UserGridItem) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) InviteUserComponent(io.imunity.furms.ui.components.InviteUserComponent)

Aggregations

Route (com.vaadin.flow.router.Route)3 AuthzService (io.imunity.furms.api.authz.AuthzService)3 DuplicatedInvitationError (io.imunity.furms.api.validation.exceptions.DuplicatedInvitationError)3 UserAlreadyHasRoleError (io.imunity.furms.api.validation.exceptions.UserAlreadyHasRoleError)3 PersistentId (io.imunity.furms.domain.users.PersistentId)3 InviteUserComponent (io.imunity.furms.ui.components.InviteUserComponent)3 MembershipChangerComponent (io.imunity.furms.ui.components.MembershipChangerComponent)3 PageTitle (io.imunity.furms.ui.components.PageTitle)3 ViewHeaderLayout (io.imunity.furms.ui.components.ViewHeaderLayout)3 UserContextMenuFactory (io.imunity.furms.ui.components.administrators.UserContextMenuFactory)3 UserGrid (io.imunity.furms.ui.components.administrators.UserGrid)3 UsersGridComponent (io.imunity.furms.ui.components.administrators.UsersGridComponent)3 NotificationUtils.showErrorNotification (io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification)3 MethodHandles (java.lang.invoke.MethodHandles)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3 BeforeEvent (com.vaadin.flow.router.BeforeEvent)2 OptionalParameter (com.vaadin.flow.router.OptionalParameter)2 ProjectService (io.imunity.furms.api.projects.ProjectService)2 UserService (io.imunity.furms.api.users.UserService)2