我是靠谱客的博主 勤奋心锁,最近开发中收集的这篇文章主要介绍snowy框架用户登录app:菜单:员工机构:角色:职位areaconstsDictTypeDictDataemailfilemonitorNotice,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

用户登录

接受前端传来的用户名,密码,租户验证码,验证码。校验验证码,查看是否开启多租户功能。

然后就是校验账号和密码,判断传入账号和密码是否为空,空就异常,根据账号查询用户,不存在抛异常。账号存在,获取账号的passwordhashvalue值,将得到的密码解密,将解密后的密码进行hashvalue处理,然后进行判断。

登录,要查看状态不能为停用状态,然后构建登录用户信息(员工信息(构建登录用户时候没有查询附属机构id,职位id),首先会获取全部的菜单id,然后根据用户id和角色id,查询出自己的数据范围。角色信息,权限信息,应用信息,数据范围信息),然后使用JWT工具类构建token,将登录信息缓存在redis中,过期时间为两个小时。然后将用户登录的时间和地址进行更新。写入日志。设置SpringSecurityContext上下文(之后获取用户就很简单),判断是否单用户登录(获取redis中所有用户的登录信息,删掉账号名相同,但是登录用户的UUID和刚生成的不同的)。

默认app:首先判断自己拥有的菜单编码,查看是否有默认激活的应用(active=Y),将这个放在userAppDictlist的第一个,否则就按照获取菜单编码的第一个作为首个app0。

app和菜单的关系,先通过角色获取菜单代码集合,菜单中的application对应这app中的code。超级管理员只能获得系统权重菜单,不能获取业务权重菜单。

由用户id,菜单id集合和appcode获取该用户的菜单树。

用户退出

  • 从request中获取到token,request中会将token进行封装,检验token,获取到payLoad中的信息UUID信息,判断redis中的uuid和生成的uuid是否相同。从redis中将key的信息进行删除。

新增:

如果不是自己所拥有的数据范围,则不能够添加该范围内的用户。首先会先给用户赋一个初始密码,然后查看用户是否设置密码,设置就覆盖掉HashValue,将手机号敏感加密使用SM4,然后保存用户信息。同时,把用户id,作为参数传给员工id,查看是否存在这个用户,没有就设置为null,然后将SysEmpParam中的参数copy给emp表,然后查看这个员工的附属机构,删除之前的附属机构,重新赋值,职位也是一样。

编辑:

和新增差不多,相当于新增了。新增时直接给了状态,编辑是先让状态为null,然后在更新状态。

删除

删除用户的时候,将用户信息中状态设置Delete,根据用户id删除员工信息表中的员工表(里边有机构),员工附属机构职位表,员工职位表信息,然后根据用户id,删除用户角色和数据范围。

授权角色

授权角色会先去查看角色权限,如果没有则不能授权,授权方式就是先删除之前的角色,然后重新赋值。

授权数据

授权数据会先去查看数据权限(就是说自己的机构是否包含想要赋值的机构),没有则不能赋值,授权方式也是先删除之前的数据范围,然后重新赋值。授权数据就相当于授权职位。

app:

激活功能:将激活的改为未激活,然后将想要激活的active改为Y。

构建树:

  • 获取父节点(0L)
  • 根据父节点获取子一级节点
  • 然后根据子一级节点进行递归。

删除app时,应查看该app下是否有正常的菜单,有则不能删除。

菜单:

  • 创建目录,校验传过来的参数。

  • 重新设置pids,因为是目录所以pids=[0],

  • 设置为启用状态

    • 创建菜单,校验参数
    • 从pid获取到pids,然后添加进去
    • 设置启用
      • 创建按钮,校验参数,包含:,
      • 从pid获取到pids,然后添加进去
      • 设置启用

删除就是级联删除,获取子节点所有的集合,然后设置为delete

修改的时候不能让自己选择自己,否则无限循环,也不能让自己成为父节点的父节点。

获取系统菜单树,根据application获得所在的菜单,然后构建树,供增加和修改时查看父节点。

切换菜单,获取角色id组合,由角色id组合得到菜单id集合,

员工

员工表包含员工id,机构id,机构name

机构表,包含pid和pids

职位表:职位id和name

员工职位表:员工id,职位id

员工附属机构职位表:员工id,机构id,职位id

删除机构时,判断是否有员工,

员工可以添加附属机构,

机构:

新增时,首先检验参数,不是管理员登录时,不能够添加父节点(0L),添加子节点时也要去数据权限校验(检验添加的节点是否在自己权限范围内)。

删除时,会先将所有的子节点放到list中,然后校验登录用户的数据区权限包不包括这些删除的节点。如果机构下有员工不能删,附属机构下有员工也不能删除。没有的话就级联删除信息。

修改的时候,首先校验登陆人的datascope是否包含操作的公司。检验参数。如果修改了别的地方的信息,去别的表中修改信息。然后将所有的子节点进行更新。

角色包含着菜单和数据。

用户被授权角色就可以有相应菜单和角色中包含的部分或全部数据

角色:

删除角色的时候,将状态改为2,然后删除该角色对应的数据范围(本人数据,自定义数据),删除用户角色中间表的信息,删除角色菜单表中数据

授权菜单时,首先应该删除原有的菜单-角色表中数据,然后新增。

授权数据范围时,如果授权为全部,没权限。如果是自定义,查看是否在自己权限范围内。授权数据时,也是先删除原有数据范围,然后赋新值。

角色也有自己的数据范围

职位

删除职位的时候,判断该职位和该员工附属职位下是否有员工,有则不能删除,要将员工-职位表中数据一并删除。

area

只有个查询方法。

consts

添加系统配置时,会将配置放到ConstantContext中,方便之后获取。

删除系统配置时,会去查看状态是否为Y,不是就可以删除,然后删除对应的Context中内容。

修改时,不能修改状态,编辑过后,将新的内容放到context中。

timer,sms,oauth,notice,monitor,log,file,emp,email,dict,consts,area,

DictType

字典类型下有个字典,通过字典类型id获得字典值。

删除的时候会将字典类型下的字典也会删除。

字典树,获取字典类型,然后设置字典类型为pid=0,然后查找字典值,pid为字典类型的id。,然后经过doTreeBuild()。

DictData

一样。

email

email功能没成功好像是因为过滤问题。

file

使用的是@Resource,按照名字查找实例@Bean,能找到实例Bean的名字,然后就调用实例@Bean。

上传文件的流程:

  • 生成id,获取文件名称,获取后缀,后缀不能为空,将三个加起来生成最后的名称。
  • 将文件转化为byte[],通过storageFile()方法在指定位置创建文件

上传文件时候,获取的默认地址是在调用构造器的时候初始化了。

monitor

在线用户列表:从redis中获取key所对应的value。

强制退出:获取登录用户的id,然后清楚登录该用户的redis信息,加入退出日志。

Notice

已收:根据当前用户id去查询所有没有被删除的信息。

这里写自定义目录标题

  • 用户登录
    • 用户退出
    • 新增:
    • 编辑:
    • 删除
    • 授权角色
    • 授权数据
  • app:
  • 菜单:
  • 员工
  • 机构:
  • 角色:
  • 职位
  • area
  • consts
  • DictType
  • DictData
  • email
  • file
  • monitor
  • Notice

最后

以上就是勤奋心锁为你收集整理的snowy框架用户登录app:菜单:员工机构:角色:职位areaconstsDictTypeDictDataemailfilemonitorNotice的全部内容,希望文章能够帮你解决snowy框架用户登录app:菜单:员工机构:角色:职位areaconstsDictTypeDictDataemailfilemonitorNotice所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部