|
- using BPA.SAAS.Manage.Application.Auth.Dtos;
- using BPA.SAAS.Manage.Comm.Const;
- using BPA.SAAS.Manage.Comm.Enum;
- using BPA.SAAS.Manage.Core.Org;
- using Mapster;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace BPA.SAAS.Manage.Application.Auth
- {
- public class AuthService : IAuthService, IDynamicApiController
- {
- private readonly ISqlSugarClient _db;
- private readonly IHttpContextAccessor _httpContextAccessor;
- public AuthService(ISqlSugarClient db, IHttpContextAccessor httpContextAccessor)
- {
- _db = db;
- _httpContextAccessor = httpContextAccessor;
- }
- /// <summary>
- /// 用户名密码登录
- /// </summary>
- /// <param name="LoginType">1平台用户登录,0加盟商登录</param>
- /// <param name="input"></param>
- /// <returns></returns>
- [HttpPost("/api/auth/login")]
- [AllowAnonymous]
- public async Task<LoginOutInfo> Login([FromHeader] string logintype, [Required] LoginInput input)
- {
-
- // 获取加密后的密码
- var encryptPasswod = MD5Encryption.Encrypt(input.Password).ToLower();
- // 判断用户名和密码是否正确 忽略全局过滤器
- var user = await _db.Queryable<BPA_Users>().Where(u => u.Account.Equals(input.Account)
- && u.Password.Equals(encryptPasswod)
- && u.IsDeleted == 0
- ).FirstAsync();
- _ = user ?? throw Oops.Oh("用户名或密码不正确");
- //获取权限
- var company = _db.Queryable<BPA_Company>().First(x => x.Id == user.GroupId && x.Status == CommonStatus.ENABLE && x.IsDeleted == 0);
- string CLAINM_SUPERADMIN = "Customer";
- if (user.AdminType == 0)
- {
- CLAINM_SUPERADMIN = "1";
- }
- _ = company ?? throw Oops.Oh("企业被锁定,请联系管理员");
- var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>
- {
- { ClaimConst.CLAINM_USERID, user.Id },
- { ClaimConst.LoginType, 0},
- { ClaimConst.CLAINM_ACCOUNT, user.Account },
- { ClaimConst.CLAINM_NAME, user.Name },
- { ClaimConst.CLAINM_SUPERADMIN, CLAINM_SUPERADMIN },
- { ClaimConst.GroupId, user.GroupId},
- { ClaimConst.OrgId,user.SysOrgId},
- //{ ClaimConst.SupplyPlatformId,company?.SupplyPlatformId}
- }, 1440);
-
- // 设置Swagger自动登录
- // _httpContextAccessor.SigninToSwagger(accessToken);
-
- // 生成刷新Token令牌
- var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, 1445);
-
- _httpContextAccessor.HttpContext.Response.Headers["access-token"] = accessToken;
- // 设置刷新Token令牌
- _httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;
- LoginOutInfo loginOutInfo = new LoginOutInfo()
- {
- userID = user.Id,
- token = accessToken
- };
- return loginOutInfo;
-
- }
- /// <summary>
- /// 获取当前登录用户信息
- /// </summary>
- /// <returns></returns>
- [HttpGet("/api/auth/getLoginUser")]
- [AllowAnonymous]
- public async Task<LoginOutput> GetLoginUserAsync()
- {
- string userid = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
- var user = await _db.Queryable<BPA_Users>().Where(u => u.Id == userid).FirstAsync();
- if (user != null)
- {
- var reslut = user.Adapt<LoginOutput>();
- return reslut;
- }
- else
- {
- throw Oops.Oh($"用户不存在");
- }
-
- }
-
- /// <summary>
- /// 退出
- /// </summary>
- /// <returns></returns>
- [HttpGet("/api/auth/logout")]
- public async Task LogoutAsync()
- {
- // _httpContextAccessor.SignoutToSwagger();
- await Task.CompletedTask;
- }
- }
- }
|