OpenAuth.Net/OpenAuth.WebApi/Controllers/ModulesController.cs

257 lines
6.8 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using Infrastructure;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App;
using OpenAuth.App.Interface;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers
{
/// <summary>
/// 模块及菜单管理
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
2021-06-11 23:40:55 +08:00
[ApiExplorerSettings(GroupName = "模块菜单_Modules")]
public class ModulesController : ControllerBase
{
private ModuleManagerApp _app;
private IAuth _authUtil;
public ModulesController(IAuth authUtil, ModuleManagerApp app)
{
_app = app;
_authUtil = authUtil;
}
/// <summary>
/// 加载角色模块
/// </summary>
/// <param name="firstId">The role identifier.</param>
/// <returns>System.String.</returns>
[HttpGet]
public Response<IEnumerable<Module>> LoadForRole(string firstId)
{
var result = new Response<IEnumerable<Module>>();
try
{
result.Result = _app.LoadForRole(firstId);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 根据某角色ID获取可访问某模块的菜单项
/// </summary>
/// <returns></returns>
[HttpGet]
public Response<IEnumerable<ModuleElement>> LoadMenusForRole(string moduleId, string firstId)
{
var result = new Response<IEnumerable<ModuleElement>>();
try
{
result.Result = _app.LoadMenusForRole(moduleId, firstId);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 获取角色已经分配的字段
/// </summary>
/// <param name="roleId">角色id</param>
/// <param name="moduleCode">模块代码如Category</param>
/// <returns></returns>
[HttpGet]
public Response<IEnumerable<string>> LoadPropertiesForRole(string roleId, string moduleCode)
{
var result = new Response<IEnumerable<string>>();
try
{
result.Result = _app.LoadPropertiesForRole(roleId, moduleCode);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 获取发起页面的菜单权限
/// </summary>
/// <returns>System.String.</returns>
[HttpGet]
public Response<List<ModuleElement>> LoadMenus(string moduleId)
{
var result = new Response<List<ModuleElement>>();
try
{
var user = _authUtil.GetCurrentUser();
if (string.IsNullOrEmpty(moduleId))
{
result.Result = user.ModuleElements;
}
else
{
var module = user.Modules.First(u => u.Id == moduleId);
if (module == null)
{
throw new Exception("模块不存在");
}
result.Result = module.Elements;
}
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
#region
//添加或修改
[HttpPost]
public Response<Module> Add(Module obj)
{
var result = new Response<Module>();
try
{
_app.Add(obj);
result.Result = obj;
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
//添加或修改
[HttpPost]
public Response Update(Module obj)
{
var result = new Response();
try
{
_app.Update(obj);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
[HttpPost]
public Response Delete([FromBody]string[] ids)
{
var result = new Response();
try
{
_app.Delete(ids);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
#endregion
2020-12-20 23:14:09 +08:00
/// <summary>
/// 新增菜单
/// <para>当前登录用户的所有角色会自动分配菜单</para>
/// </summary>
[HttpPost]
public Response<ModuleElement> AddMenu(ModuleElement obj)
{
var result = new Response<ModuleElement>();
try
{
_app.AddMenu(obj);
result.Result = obj;
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
2020-12-20 23:14:09 +08:00
/// <summary>
/// 修改菜单属性
/// </summary>
[HttpPost]
public Response UpdateMenu(ModuleElement obj)
{
var result = new Response();
try
{
_app.UpdateMenu(obj);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
2020-12-20 23:14:09 +08:00
/// <summary>
/// 删除菜单
/// </summary>
[HttpPost]
public Response DeleteMenu([FromBody]string[] ids)
{
var result = new Response();
try
{
_app.DelMenu(ids);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
}
}