OpenAuth.Net/OpenAuth.WebApi/Controllers/CheckController.cs

378 lines
11 KiB
C#
Raw Normal View History

// ***********************************************************************
// Assembly : OpenAuth.WebApi
// Author : yubaolee
// Created : 07-11-2016
//
// Last Modified By : yubaolee
// Last Modified On : 07-11-2016
// Contact :
// File: CheckController.cs
// 登录相关的操作
// ***********************************************************************
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App;
using OpenAuth.App.Interface;
using OpenAuth.App.Response;
using OpenAuth.App.SSO;
using OpenAuth.Repository.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using Infrastructure.Helpers;
using Microsoft.Extensions.Logging;
using StackExchange.Profiling;
namespace OpenAuth.WebApi.Controllers
{
/// <inheritdoc />
/// <summary>
/// 登录及与登录信息获取相关的接口
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
2021-06-11 23:40:55 +08:00
[ApiExplorerSettings(GroupName = "登录验证_Check")]
public class CheckController : ControllerBase
{
private readonly IAuth _authUtil;
private ILogger _logger;
private AuthStrategyContext _authStrategyContext;
public CheckController(IAuth authUtil, ILogger<CheckController> logger)
{
_authUtil = authUtil;
_logger = logger;
_authStrategyContext = _authUtil.GetCurrentUser();
}
/// <summary>
/// 获取登录用户资料
/// </summary>
/// <returns></returns>
[HttpGet]
public Response<UserView> GetUserProfile()
{
var resp = new Response<UserView>();
try
{
resp.Result = _authStrategyContext.User.MapTo<UserView>();
}
catch (Exception e)
{
resp.Code = 500;
resp.Message = e.Message;
}
return resp;
}
/// <summary>
/// 检验token是否有效
/// </summary>
/// <param name="token">The token.</param>
/// <param name="requestid">备用参数.</param>
[HttpGet]
public Response<bool> GetStatus()
{
var result = new Response<bool>();
try
{
result.Result = _authUtil.CheckLogin();
}
catch (Exception ex)
{
result.Code = Define.INVALID_TOKEN;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 获取登录用户的所有可访问的角色
/// </summary>
[HttpGet]
public Response<List<Role>> GetRoles()
{
var result = new Response<List<Role>>();
try
{
result.Result = _authStrategyContext.Roles;
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message
: "OpenAuth.WebAPI数据库访问失败:" + ex.Message;
}
}
return result;
}
/// <summary>
/// 获取当前登录用户可访问的字段
/// </summary>
/// <param name="moduleCode">模块的Code如Category</param>
/// <returns></returns>
[HttpGet]
public Response<List<BuilderTableColumn>> GetProperties(string moduleCode)
{
var result = new Response<List<BuilderTableColumn>>();
try
{
result.Result = _authStrategyContext.GetTableColumns(moduleCode);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 获取登录用户的所有可访问的组织信息
/// </summary>
[HttpGet]
public Response<List<OrgView>> GetOrgs()
{
var result = new Response<List<OrgView>>();
try
{
result.Result = _authStrategyContext.Orgs;
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message
: "OpenAuth.WebAPI数据库访问失败:" + ex.Message;
}
}
return result;
}
/// <summary>
/// 加载机构的全部下级机构
/// </summary>
/// <param name="orgId">机构ID</param>
/// <returns></returns>
[HttpGet]
public TableData GetSubOrgs(string orgId)
{
string cascadeId = ".0.";
if (!string.IsNullOrEmpty(orgId))
{
var org = _authStrategyContext.Orgs.SingleOrDefault(u => u.Id == orgId);
if (org == null)
{
return new TableData
{
msg = "未找到指定的节点",
code = 500,
};
}
cascadeId = org.CascadeId;
}
var query = _authStrategyContext.Orgs
.Where(u => u.CascadeId.Contains(cascadeId))
.OrderBy(u =>u.CascadeId);
return new TableData
{
data = query.ToList(),
count = query.Count(),
};
}
/// <summary>
/// 获取登录用户的所有可访问的模块及菜单,以列表形式返回结果
/// </summary>
[HttpGet]
public Response<List<ModuleView>> GetModules()
{
var result = new Response<List<ModuleView>>();
try
{
result.Result = _authStrategyContext.Modules;
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message
: "OpenAuth.WebAPI数据库访问失败:" + ex.Message;
}
}
return result;
}
/// <summary>
/// 获取登录用户的所有可访问的模块及菜单,以树状结构返回
/// </summary>
[HttpGet]
public Response<IEnumerable<TreeItem<ModuleView>>> GetModulesTree()
{
var result = new Response<IEnumerable<TreeItem<ModuleView>>>();
try
{
result.Result = _authStrategyContext.Modules.GenerateTree(u => u.Id, u => u.ParentId);
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message
: "OpenAuth.WebAPI数据库访问失败:" + ex.Message;
}
}
return result;
}
/// <summary>
/// 获取登录用户的所有可访问的资源
/// </summary>
[HttpGet]
public Response<List<SysResource>> GetResources()
{
var result = new Response<List<SysResource>>();
try
{
result.Result = _authStrategyContext.Resources;
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message
: "OpenAuth.WebAPI数据库访问失败:" + ex.Message;
}
}
return result;
}
/// <summary>
/// 根据token获取用户名称
/// </summary>
[HttpGet]
public Response<string> GetUserName()
{
var result = new Response<string>();
try
{
result.Result = _authStrategyContext.User.Account;
}
catch (CommonException ex)
{
if (ex.Code == Define.INVALID_TOKEN)
{
result.Code = ex.Code;
result.Message = ex.Message;
}
else
{
result.Code = 500;
result.Message = ex.InnerException != null
? ex.InnerException.Message : ex.Message;
}
}
return result;
}
/// <summary>
/// 登录接口
/// </summary>
/// <param name="request">登录参数</param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public LoginResult Login([FromBody] PassportLoginRequest request)
{
var result = new LoginResult();
try
2021-06-11 23:40:55 +08:00
{
2021-05-26 01:14:41 +08:00
result = _authUtil.Login(request.AppKey, request.Account, request.Password);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 注销登录
/// </summary>
/// <param name="token"></param>
/// <param name="requestid">备用参数.</param>
[HttpPost]
public Response<bool> Logout()
{
var resp = new Response<bool>();
try
{
resp.Result = _authUtil.Logout();
}
catch (Exception e)
{
resp.Result = false;
resp.Message = e.Message;
}
return resp;
}
}
}