1、添加用户数据的页面数据预加载
前端对应页面
前端对应方法:
这里的reset()方法是表单重置,即将表单内的内容清空。
这里的getUser()方法用于加载其他数据,如岗位、角色等。(通过使用此方法从后台加载出,回填到添加用户的表单)
在后台找到‘system/user’对应注解下的GetMapper注解,发现对应方法
{ -->checkUserDataScope()
方法是用于检测当前用户是否拥有权限的(只有在没有权限的时候才会抛出语句),代码解读如下:
可以发现此方法中会通过SecurityUtils.getUserId()
来获取当前登录的用户id,然后利用isAdmin
来判断拿到的id是不是管理员id,若不是管理员角色,则通过selectUserList
方法找到该id对应的角色所拥有的权限集合,通过判断该权限集合是否为空来决定是否抛出‘没有权限访问用户数据!’的异常。 --> }
通过selectRoleAll()
方法来获取所有角色的一个集合roles
其中 ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
这句是strem流的应用(点我),若该id对应着管理员,则将roles中的所有角色赋给ajax.put中的roles;若不对应着管理员,则使用strem流,利用其中的过滤排除管理员的内容再组成新的集合,然后进行赋值操作。(这里就保证了无法给新建的用户创建管理员角色,保证了最高权限)
再通过selectPostAll()
来获取所有岗位的一个集合
在执行此业务时userId为null,因而不会进入到if (StringUtils.isNotNull(userId))
语句中。(这里的userId用于判断当前执行的业务逻辑时进行新增用户还是修改用户,新增则为null,修改则有值)
最后通过ajax返回前端。(至此,进行新增用户的页面准备操作完成)
2、添加用户功能的实现
这里是在学习了权限功能后才能继续开发