如何为一个用户(配置文件)授予权限以仅删除jhipster中的另一个用户(配置文件)

时间:2017-10-29 16:57:44

标签: angularjs spring spring-boot spring-security jhipster

我需要在jhipster中查看管理下拉到其他权限。对于哪个文件我应该如何更改?我想它应该是navbar.html和以下一行。

<li ng-class="{active: `vm.$state.includes('admin')`}"  ng-switch-when="true" has-authority="ROLE_ADMIN" uib-dropdown class="dropdown pointer"> 

如何在那里传递多个权限。其他权限应该是ROLE_MEMBER。在JHI_AUTHORITY表中添加了它。我尝试了上面的代码如下。但没有做出我需要的改变。

vm.$state.includes('admin','member')

has-any-authority的作用如下面的答案所示。然后我需要为成员授予删除具有ROLE_STUDENT配置文件的用户的权限。我该怎么办?

.state('user-management.delete', {
        url: '/{login}/delete',
        data: {
            authorities: ['ROLE_ADMIN','ROLE_MEMBER']
        },

成员和管理员都可以删除所有用户。但我需要为会员提供仅删除学生的权利(ROLE_STUDENT)。我该如何实现这种逻辑?可能应该在UserResource.java中实现以下方法。

@DeleteMapping("/users/{login:" + Constants.LOGIN_REGEX + "}")
@Timed
@Secured({AuthoritiesConstants.ADMIN, AuthoritiesConstants.MEMBER})
public ResponseEntity<Void> deleteUser(@PathVariable String login) {
    log.debug("REST request to delete User: {}", login);
    boolean hasAuthorityAdmin = false;
    boolean hasAuthorityMember = false;
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
    hasAuthorityAdmin = authorities.contains(new SimpleGrantedAuthority(AuthoritiesConstants.ADMIN));
    hasAuthorityMember = authorities.contains(new SimpleGrantedAuthority(AuthoritiesConstants.MEMBER));
    if (hasAuthorityAdmin) {
        // delete user
        userService.deleteUser(login);
    } else {
        if (hasAuthorityMember) {
            // delete user if it is a student
            if (userService.getAuthorities().size() == 4 && userService.getAuthorities().contains(AuthoritiesConstants.STUDENT)) {
                userService.deleteUser(login);
            }
        }
    }
    return ResponseEntity.ok().headers(HeaderUtil.createAlert("userManagement.deleted", login)).build();
}

我猜错了这个if (userService.getAuthorities().size() == 4 && userService.getAuthorities().contains(AuthoritiesConstants.STUDENT))条件。如果我可以获得要删除的用户角色,那么我们可以检查它是否是ROLE_STUDENT。我认为deleteUser(@PathVariable String login)如果我们可以传递另一个参数来获取要删除的用户配置文件,我们可以解决问题。或者,如果我们可以在userService中找到另一个方法来获取要删除的权限?

2 个答案:

答案 0 :(得分:2)

我认为您可以使用 has-any-authority

来实现
<li ng-class="{active: `vm.$state.includes('admin')`}"  ng-switch-when="true" has-any-authority="ROLE_MEMBER, ROLE_ADMIN" uib-dropdown class="dropdown pointer"> 

答案 1 :(得分:2)

在更新问题之后,如果当前用户具有角色成员,您可以执行以下操作,以便能够删除具有ROLE STUDENT的用户:

#include <iostream>
using namespace std;

int main()
{  
    int a,b;
    cin>>a;
    for(int i=31;i>=0;i--)
    {
        b=(a>>i)&1;
        cout<<b;
    }
}