| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package admin
- import (
- "ulink-admin/frame"
- "ulink-admin/modules/system/models/model"
- "ulink-admin/modules/system/models/req"
- service2 "ulink-admin/modules/system/service"
- "ulink-admin/pkg/cache"
- "ulink-admin/pkg/captcha"
- "ulink-admin/pkg/jwt/admin"
- "ulink-admin/pkg/library/tree/tree_menu"
- "ulink-admin/pkg/tool"
- )
- type LoginApi struct {
- LoginService *service2.LoginService `inject:""`
- PermissionService *service2.PermissionService `inject:""`
- UserService *service2.UserService `inject:""`
- MenuService *service2.MenuService `inject:""`
- }
- // Login 登录
- // @Summary 登录接口
- // @Description 用户登录接口
- // @Tags 用户登录相关接口
- // @Accept application/json
- // @Produce application/json
- // @Param data body req.LoginBody true "登录实体对象"
- // @Success 200 {object} resp.Response{data=map[stirng]string,msg=string} "返回登录结果"
- // @Router /login [post]
- func (a LoginApi) Login(c *frame.Context) {
- loginBody := req.LoginBody{}
- err := c.BindJSON(&loginBody)
- c.ValidteError(err, loginBody)
- isValidated := captcha.VerifyCaptcha(loginBody.Uuid, loginBody.Code)
- if !isValidated {
- c.Error("验证码错误")
- return
- }
- m := make(map[string]string)
- priKey := "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY" +
- "7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN" +
- "PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA" +
- "kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow" +
- "cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv" +
- "DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh" +
- "YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3" +
- "UP8iWi1Qw0Y="
- priKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMZzL52gRgjJWN\n4ptiX9Qm6ucfBmd5+j8mDH7JrcG2qOBGl03rYTUGCcIq2xOdSFy93Zr6h2dFL73V\n5Du7QyN6w1nc2w4eUAXw7HPD8YyGaMFCSe38LAAsZS7Wl5pmGkpizCYVdwlDBvGk\n/A7FD1SJH5zIJagR05Ox/78LDsmL4YLpN3F2UpixcHp8jn0cx57uYNiq8k4KUS9/\ncwlFsUPRn1c/+Bi0hv+DyWLuTMb5Unzneqwcc1uBfCaams/8ujzt61rWBUI8+hyv\nmewTWp5dR7vqyzCir6/Tkr6prxsDhZB70JZIKXYpD6pFK6DGTPPgrhEO5jaEsI8t\n5+pzLVkrAgMBAAECggEAFwB6BRHasj6/ybK5h61/A04l6iDfXiOiHZcEYY+zH+oL\nKwZ110oeHGrWtdnncCinfxpECXNZVLjVpQ9FBYK9qF/5adgg05pvwLfrIx64kJuT\nO/Fz3Y/aCSTty2pODrVgr5OHqZy2pxtN8CIJS3W5LqEnFILgUfk8QqikCAuG9L2d\nPqZ+SPw1mcDXR6XGDc43ye4EpMfg3c0ngrvJj33ypkk/4MqxA7oEi209NqDr7arH\nocNf+piQFg1XBC7+yNiteiG+CffXE5PaVzbKcbeOXaNv6038SRbSDl7eGHdXqkac\nlgJw45vBn1lt6Zmm2uy8STegiy5nQdK5AqbxaAsu6QKBgQD5lPxIRdUowmMEXsDQ\nqCcsd31SL7WRsmas7SJ1fDRTE9MhWfiY9tdKwzxwpYMaZNo8tentkCkfWcMb4aCc\nMfRSUdOZvOZ4GLj5BeXCOm3GNyx37UunFjiFjH1plYN2Jc+0v/jJvAeTXEYwpVV+\nFA0ejKwj6LrW37nPkjvxA8XSnwKBgQDRqMxc5LtGAM9Kkh76rQ8Nnw6eF6peN0lD\nOe2RoA8kUKrG/hpfaOJXXJ9kEwyUS8ItONrLLyOle/0KQM3yH2tXisx1VQmCe1lW\nGM/XNyr5xyRFdQOzGKDZW5Dj8PUba5pWLPfOjxhd61TnUBVvJYHHTmMgvNIdO5RP\nt/+O+W7Z9QKBgHxhsH0AOGQQxDIIWsViF+vEPPN5jV5n712c7IBqftUsWxsS8J6i\n3daHiBaHldfQjSaWbleTcbsLC/5YKqfNCXsBBphmmOEfSQfp1YA/iDexhXrbCsnh\nfBeqVVIKTjLSUzo8Neurxoa9BMn3i6zCp2sjJiLbOEofw0VcFn1dqPf3AoGAOrqj\n9GmGJAfaCTOBRgrwKoqhl5tdd+LYvOIfMCm71BpcnD1VueAxdvNVGr1TSr8l93Dz\nqPLdc1+V9CdPCUHP2cfhmgRmE4zl634rykeD3E/yUxqCHMsLU5eYsKEwp6uuofEa\nwVvIIZboQ5tlRasl/WRx1BvQZ6vm0aXjCnPIn3kCgYEAszDHu3tjh41APRf3We9x\nov2GtBUq+4n+6c66bl4dODER3Rj/ZTP1phYeYmdw4kgI/j4eabQSBlkWqx5NOP92\nte+NXDQc2OIuFzH0G16d3dLidHaI4WY/LDRxNS8/owzyDZGJAoPtkTHHR+0W32Y8\nLr76/MhhtQnxEu6pHWer6Nk="
- dpwd, eorr := tool.RSADecryptByPrivateKey(loginBody.Password, priKey)
- if eorr != nil {
- c.Error("密码解密错误")
- return
- }
- loginBody.Password = string(dpwd)
- s := a.LoginService.Login(loginBody.UserName, loginBody.Password)
- //将token存入到redis中
- admin.SaveRedisToken(s)
- m["token"] = s
- c.Ok(m)
- }
- // captcha 获取验证码接口
- // @Summary 获取验证码接口
- // @Description 获取验证码接口
- // @Tags 用户登录相关接口
- // @Accept application/json
- // @Produce application/json
- // @Success 200 {object} resp.Response{data=captcha.CaptchaInfo,msg=string} "返回验证码查询"
- // @Router /getCaptcha [get]
- func (a LoginApi) GetCaptcha(c *frame.Context) {
- id, image, error := captcha.CreateCode()
- captchaInfo := new(captcha.CaptchaInfo)
- if error != nil {
- frame.Throw(frame.BUSINESS_CODE, "获取验证码错误")
- }
- captchaInfo.Id = id
- captchaInfo.Image = image
- c.Ok(captchaInfo)
- }
- // GetUserInfo 获取用户信息
- // Login 用户详情查询接口
- // @Summary 用户详情查询接口
- // @Description 用户详情查询接口
- // @Tags 用户登录相关接口
- // @Accept application/json
- // @Produce application/json
- // @Param Authorization header string false "Bearer 令牌"
- // @Success 200 {object} resp.Response{data=map[stirng]interface{},msg=string} "返回用户详情查询"
- // @Router /getInfo [get]
- func (a LoginApi) GetUserInfo(c *frame.Context) {
- m := make(map[string]interface{})
- user := a.LoginService.LoginUser(c)
- record := new(model.SysUser)
- a.UserService.GetById(user.Id, record)
- //查询用户角色集合
- roleKeys := a.PermissionService.GetRolePermissionByUserId(record)
- // 权限集合
- perms := a.PermissionService.GetMenuPermission(record)
- menus := a.MenuService.GetMenuTreeByUserId(user)
- systemMenus := tree_menu.SystemMenus{}
- systemMenus = *menus
- array := systemMenus.ConvertToINodeArray()
- generateTree := tree_menu.GenerateTree(array, nil)
- m["roles"] = roleKeys
- m["permissions"] = perms
- m["user"] = user
- m["menu"] = generateTree
- c.Ok(m)
- }
- // GetRouters 根据用户ID查询菜单
- // Login 登录
- // @Summary 用户菜单查询接口
- // @Description 用户菜单查询接口
- // @Tags 用户登录相关接口
- // @Accept application/json
- // @Produce application/json
- // @Param Authorization header string false "Bearer 令牌"
- // @Success 200 {object} resp.Response{data=[]tree_menu.Tree,msg=string} "返回用户菜单查询"
- // @Router /getRouters [get]
- func (a LoginApi) GetRouters(c *frame.Context) {
- //获取等钱登录用户
- user := a.LoginService.LoginUser(c)
- menus := a.MenuService.GetMenuTreeByUserId(user)
- systemMenus := tree_menu.SystemMenus{}
- systemMenus = *menus
- array := systemMenus.ConvertToINodeArray()
- generateTree := tree_menu.GenerateTree(array, nil)
- c.Ok(generateTree)
- }
- // Logout 退出登录
- // @Summary 退出登录接口
- // @Description 退出登录接口
- // @Tags 用户登录相关接口
- // @Accept application/json
- // @Produce application/json
- // @Param Authorization header string false "Bearer 令牌"
- // @Success 200 {object} resp.Response "返回退出结果"
- // @Router /logout [post]
- func (a LoginApi) Logout(c *frame.Context) {
- //删除Redis缓存
- name := admin.GetJWTRedisKey(c)
- cache.RemoveKey(name)
- }
|