规范api返回异常,统一改用400异常
This commit is contained in:
parent
1fbf0ada64
commit
4ea469a1fa
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using FAuth.Extensions;
|
using FAuth.Extensions;
|
||||||
using FAuth.Models;
|
using FAuth.Models;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
@ -12,6 +13,7 @@ namespace FAuth.Controllers.api
|
||||||
[ApiController, Route("api/[Controller]/[Action]")]
|
[ApiController, Route("api/[Controller]/[Action]")]
|
||||||
[ServiceFilter(typeof(ApiExceptionFilterAttribute))]
|
[ServiceFilter(typeof(ApiExceptionFilterAttribute))]
|
||||||
[ProducesResponseType(typeof(ApiErrorResult),500)]
|
[ProducesResponseType(typeof(ApiErrorResult),500)]
|
||||||
|
[ProducesResponseType(typeof(ApiErrorResult),400)]
|
||||||
public abstract class ApiControllerBase<LoggerType>:ControllerBase<LoggerType>
|
public abstract class ApiControllerBase<LoggerType>:ControllerBase<LoggerType>
|
||||||
{
|
{
|
||||||
public ApiControllerBase(ILogger<LoggerType> logger,IServiceProvider service) : base(logger,service) {
|
public ApiControllerBase(ILogger<LoggerType> logger,IServiceProvider service) : base(logger,service) {
|
||||||
|
|
|
@ -8,6 +8,7 @@ using FAuth.DataBase;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using FAuth.Extensions;
|
||||||
|
|
||||||
namespace FAuth.Controllers.api
|
namespace FAuth.Controllers.api
|
||||||
{
|
{
|
||||||
|
@ -29,11 +30,11 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(Apps),200)]
|
[ProducesResponseType(typeof(Apps),200)]
|
||||||
public Apps AddNewApp(string appName,string description) {
|
public Apps AddNewApp(string appName,string description) {
|
||||||
if(appName.IsNullOrEmpty()) {
|
if(appName.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(appName));
|
throw new ApiArgumentNullException(nameof(appName));
|
||||||
}
|
}
|
||||||
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
throw new Exception($"应用{appName}已经存在,不可以重复创建!");
|
throw new ApiException($"应用{appName}已经存在,不可以重复创建!");
|
||||||
}
|
}
|
||||||
var newApp = new Apps {
|
var newApp = new Apps {
|
||||||
Name = appName,
|
Name = appName,
|
||||||
|
@ -47,7 +48,7 @@ namespace FAuth.Controllers.api
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public bool RemoveApp(string appName) {
|
public bool RemoveApp(string appName) {
|
||||||
if(appName.IsNullOrEmpty()) {
|
if(appName.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(appName));
|
throw new ApiArgumentNullException(nameof(appName));
|
||||||
}
|
}
|
||||||
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
||||||
foreach(var item in qu) {
|
foreach(var item in qu) {
|
||||||
|
@ -66,12 +67,12 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(Apps),200)]
|
[ProducesResponseType(typeof(Apps),200)]
|
||||||
public Apps GetApps(string appName) {
|
public Apps GetApps(string appName) {
|
||||||
if(string.IsNullOrEmpty(appName))
|
if(string.IsNullOrEmpty(appName))
|
||||||
throw new ArgumentException("message",nameof(appName));
|
throw new ApiArgumentNullException(nameof(appName));
|
||||||
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
var qu = this.Db.Apps.Where(m => m.Name == appName);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
return qu.First();
|
return qu.First();
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("没有找到该应用");
|
throw new ApiException("没有找到该应用");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -24,11 +25,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Binding(int appId,int roleGroupId) {
|
public bool Binding(int appId,int roleGroupId) {
|
||||||
var aQu = this.Db.Apps.Where(m => m.Id == appId);
|
var aQu = this.Db.Apps.Where(m => m.Id == appId);
|
||||||
if(!aQu.Any()) {
|
if(!aQu.Any()) {
|
||||||
throw new Exception("没有找到指定的应用");
|
throw new ApiException("没有找到指定的应用");
|
||||||
}
|
}
|
||||||
var rQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
var rQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色组");
|
throw new ApiException("没有找到指定的角色组");
|
||||||
}
|
}
|
||||||
var arQu = this.Db.App_RoleGroups.Where(m => m.AppId == appId && m.RoleGroupId == roleGroupId);
|
var arQu = this.Db.App_RoleGroups.Where(m => m.AppId == appId && m.RoleGroupId == roleGroupId);
|
||||||
if(!arQu.Any()) {
|
if(!arQu.Any()) {
|
||||||
|
@ -51,11 +52,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Unbind(int appId,int roleGroupId) {
|
public bool Unbind(int appId,int roleGroupId) {
|
||||||
var aQu = this.Db.Apps.Where(m => m.Id == appId);
|
var aQu = this.Db.Apps.Where(m => m.Id == appId);
|
||||||
if(!aQu.Any()) {
|
if(!aQu.Any()) {
|
||||||
throw new Exception("没有找到指定的应用");
|
throw new ApiException("没有找到指定的应用");
|
||||||
}
|
}
|
||||||
var rQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
var rQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色组");
|
throw new ApiException("没有找到指定的角色组");
|
||||||
}
|
}
|
||||||
var arQu = this.Db.App_RoleGroups.Where(m => m.AppId == appId && m.RoleGroupId == roleGroupId);
|
var arQu = this.Db.App_RoleGroups.Where(m => m.AppId == appId && m.RoleGroupId == roleGroupId);
|
||||||
if(arQu.Any()) {
|
if(arQu.Any()) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Falcon.Extend;
|
using Falcon.Extend;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -28,11 +29,11 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(Roles),200)]
|
[ProducesResponseType(typeof(Roles),200)]
|
||||||
public Roles AddNewRole(string roleName,string description) {
|
public Roles AddNewRole(string roleName,string description) {
|
||||||
if(roleName.IsNullOrEmpty()) {
|
if(roleName.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(roleName));
|
throw new ApiArgumentNullException(nameof(roleName));
|
||||||
}
|
}
|
||||||
var qu = this.Db.Roles.Where(m => m.Name == roleName);
|
var qu = this.Db.Roles.Where(m => m.Name == roleName);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
throw new Exception($"角色{roleName}已经存在,不可以重复创建!");
|
throw new ApiException($"角色{roleName}已经存在,不可以重复创建!");
|
||||||
}
|
}
|
||||||
var newRole = new Roles {
|
var newRole = new Roles {
|
||||||
Name = roleName,
|
Name = roleName,
|
||||||
|
@ -51,13 +52,11 @@ namespace FAuth.Controllers.api
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[ProducesResponseType(typeof(Roles),200)]
|
[ProducesResponseType(typeof(Roles),200)]
|
||||||
public Roles GetApps(string roleName) {
|
public Roles GetApps(string roleName) {
|
||||||
if(string.IsNullOrEmpty(roleName))
|
|
||||||
throw new ArgumentException("message",nameof(roleName));
|
|
||||||
var qu = this.Db.Roles.Where(m => m.Name == roleName);
|
var qu = this.Db.Roles.Where(m => m.Name == roleName);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
return qu.First();
|
return qu.First();
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("没有找到该角色");
|
throw new ApiException("没有找到该角色");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Falcon.Extend;
|
using Falcon.Extend;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -26,11 +27,11 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(RoleGroup),200)]
|
[ProducesResponseType(typeof(RoleGroup),200)]
|
||||||
public RoleGroup AddNew(string name,string description) {
|
public RoleGroup AddNew(string name,string description) {
|
||||||
if(name.IsNullOrEmpty()) {
|
if(name.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(name));
|
throw new ApiArgumentNullException(nameof(name));
|
||||||
}
|
}
|
||||||
var qu = this.Db.RoleGroups.Where(m => m.Name == name);
|
var qu = this.Db.RoleGroups.Where(m => m.Name == name);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
throw new Exception($"角色组{name}已经存在,不可以重复创建!");
|
throw new ApiException($"角色组{name}已经存在,不可以重复创建!");
|
||||||
}
|
}
|
||||||
var model = new RoleGroup {
|
var model = new RoleGroup {
|
||||||
Name = name,
|
Name = name,
|
||||||
|
@ -50,7 +51,7 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(RoleGroup),200)]
|
[ProducesResponseType(typeof(RoleGroup),200)]
|
||||||
public RoleGroup GetApps(string name) {
|
public RoleGroup GetApps(string name) {
|
||||||
if(string.IsNullOrEmpty(name))
|
if(string.IsNullOrEmpty(name))
|
||||||
throw new ArgumentException("message",nameof(name));
|
throw new ApiArgumentNullException(nameof(name));
|
||||||
var qu = this.Db.RoleGroups.Where(m => m.Name == name);
|
var qu = this.Db.RoleGroups.Where(m => m.Name == name);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
return qu.First();
|
return qu.First();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -25,11 +26,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Binding(int roleGroupId,int roleId) {
|
public bool Binding(int roleGroupId,int roleId) {
|
||||||
var rgQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
var rgQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
||||||
if(!rgQu.Any()) {
|
if(!rgQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色组");
|
throw new ApiException("没有找到指定的角色组");
|
||||||
}
|
}
|
||||||
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色");
|
throw new ApiException("没有找到指定的角色");
|
||||||
}
|
}
|
||||||
var rgr = this.Db.RoleGroup_Roles.Where(m => m.RoleGroupId == roleGroupId && m.RoleId == roleId);
|
var rgr = this.Db.RoleGroup_Roles.Where(m => m.RoleGroupId == roleGroupId && m.RoleId == roleId);
|
||||||
if(!rgr.Any()) {
|
if(!rgr.Any()) {
|
||||||
|
@ -52,11 +53,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Unbind(int roleGroupId,int roleId) {
|
public bool Unbind(int roleGroupId,int roleId) {
|
||||||
var rgQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
var rgQu = this.Db.RoleGroups.Where(m => m.Id == roleGroupId);
|
||||||
if(!rgQu.Any()) {
|
if(!rgQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色组");
|
throw new ApiException("没有找到指定的角色组");
|
||||||
}
|
}
|
||||||
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色");
|
throw new ApiException("没有找到指定的角色");
|
||||||
}
|
}
|
||||||
var rgr = this.Db.RoleGroup_Roles.Where(m => m.RoleGroupId == roleGroupId && m.RoleId == roleId);
|
var rgr = this.Db.RoleGroup_Roles.Where(m => m.RoleGroupId == roleGroupId && m.RoleId == roleId);
|
||||||
if(rgr.Any()) {
|
if(rgr.Any()) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -26,11 +27,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Binding(int roleId,int userId) {
|
public bool Binding(int roleId,int userId) {
|
||||||
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色");
|
throw new ApiException("没有找到指定的角色");
|
||||||
}
|
}
|
||||||
var uQu = this.Db.Users.Where(m => m.Id == userId);
|
var uQu = this.Db.Users.Where(m => m.Id == userId);
|
||||||
if(!uQu.Any()) {
|
if(!uQu.Any()) {
|
||||||
throw new Exception("没有找到指定的用户");
|
throw new ApiException("没有找到指定的用户");
|
||||||
}
|
}
|
||||||
var ruQu = this.Db.Role_Users.Where(m => m.RoleId == roleId && m.UserId == userId);
|
var ruQu = this.Db.Role_Users.Where(m => m.RoleId == roleId && m.UserId == userId);
|
||||||
if(!ruQu.Any()) {
|
if(!ruQu.Any()) {
|
||||||
|
@ -53,11 +54,11 @@ namespace FAuth.Controllers.api
|
||||||
public bool Unbind(int roleId,int userId) {
|
public bool Unbind(int roleId,int userId) {
|
||||||
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
var rQu = this.Db.Roles.Where(m => m.Id == roleId);
|
||||||
if(!rQu.Any()) {
|
if(!rQu.Any()) {
|
||||||
throw new Exception("没有找到指定的角色");
|
throw new ApiException("没有找到指定的角色");
|
||||||
}
|
}
|
||||||
var uQu = this.Db.Users.Where(m => m.Id == userId);
|
var uQu = this.Db.Users.Where(m => m.Id == userId);
|
||||||
if(!uQu.Any()) {
|
if(!uQu.Any()) {
|
||||||
throw new Exception("没有找到指定的用户");
|
throw new ApiException("没有找到指定的用户");
|
||||||
}
|
}
|
||||||
var ruQu = this.Db.Role_Users.Where(m => m.RoleId == roleId && m.UserId == userId);
|
var ruQu = this.Db.Role_Users.Where(m => m.RoleId == roleId && m.UserId == userId);
|
||||||
if(ruQu.Any()) {
|
if(ruQu.Any()) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Falcon.Extend;
|
using Falcon.Extend;
|
||||||
using FAuth.DataBase.Tables;
|
using FAuth.DataBase.Tables;
|
||||||
|
using FAuth.Extensions;
|
||||||
using FAuth.Extensions.Account;
|
using FAuth.Extensions.Account;
|
||||||
using FAuth.Extensions.Decryptor;
|
using FAuth.Extensions.Decryptor;
|
||||||
using FAuth.Models;
|
using FAuth.Models;
|
||||||
|
@ -38,11 +39,11 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(CheckUserResult),200)]
|
[ProducesResponseType(typeof(CheckUserResult),200)]
|
||||||
public CheckUserResult Login(string userName,string password) {
|
public CheckUserResult Login(string userName,string password) {
|
||||||
if(userName.IsNullOrEmpty()) {
|
if(userName.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(userName));
|
throw new ApiArgumentNullException(nameof(userName));
|
||||||
}
|
}
|
||||||
var qu = this.Db.Users.Where(m => m.UserName == userName && m.Password == password);
|
var qu = this.Db.Users.Where(m => m.UserName == userName && m.Password == password);
|
||||||
if(!qu.Any()) {
|
if(!qu.Any()) {
|
||||||
throw new Exception("提供的用户名或密码不正确");
|
throw new ApiException("提供的用户名或密码不正确");
|
||||||
}
|
}
|
||||||
var fir = qu.First();
|
var fir = qu.First();
|
||||||
var now = DateTimeOffset.Now;
|
var now = DateTimeOffset.Now;
|
||||||
|
@ -66,12 +67,12 @@ namespace FAuth.Controllers.api
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public bool Logout(string ticket) {
|
public bool Logout(string ticket) {
|
||||||
if(ticket.IsNullOrEmpty()) {
|
if(ticket.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(ticket));
|
throw new ApiArgumentNullException(nameof(ticket));
|
||||||
}
|
}
|
||||||
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
||||||
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
||||||
if(!qu.Any()) {
|
if(!qu.Any()) {
|
||||||
throw new Exception("提交的票据信息错误");
|
throw new ApiException("提交的票据信息错误");
|
||||||
}
|
}
|
||||||
var fir = qu.First();
|
var fir = qu.First();
|
||||||
fir.Status &= ~FUserStatusEnum.Login;
|
fir.Status &= ~FUserStatusEnum.Login;
|
||||||
|
@ -90,16 +91,16 @@ namespace FAuth.Controllers.api
|
||||||
[ProducesResponseType(typeof(UserInfo),200)]
|
[ProducesResponseType(typeof(UserInfo),200)]
|
||||||
public UserInfo GetUserByTicket([BindRequired]string ticket) {
|
public UserInfo GetUserByTicket([BindRequired]string ticket) {
|
||||||
if(ticket.IsNullOrEmpty()) {
|
if(ticket.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(ticket));
|
throw new ApiArgumentNullException(nameof(ticket));
|
||||||
}
|
}
|
||||||
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
||||||
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
||||||
if(!qu.Any()) {
|
if(!qu.Any()) {
|
||||||
throw new Exception("提交的票据信息错误");
|
throw new ApiException("提交的票据信息错误");
|
||||||
}
|
}
|
||||||
var fir = qu.First();
|
var fir = qu.First();
|
||||||
if(fir.LastLogoutDatetime.HasValue && userTicketModel.LoginDatetime < fir.LastLogoutDatetime.Value) {
|
if(fir.LastLogoutDatetime.HasValue && userTicketModel.LoginDatetime < fir.LastLogoutDatetime.Value) {
|
||||||
throw new Exception("用户已登出");
|
throw new ApiException("用户已登出");
|
||||||
}
|
}
|
||||||
return new UserInfo {
|
return new UserInfo {
|
||||||
Id = fir.Id,
|
Id = fir.Id,
|
||||||
|
@ -137,12 +138,12 @@ namespace FAuth.Controllers.api
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public bool ChangePassword(string ticket,string nPassword) {
|
public bool ChangePassword(string ticket,string nPassword) {
|
||||||
if(ticket.IsNullOrEmpty()) {
|
if(ticket.IsNullOrEmpty()) {
|
||||||
throw new ArgumentNullException(nameof(ticket));
|
throw new ApiArgumentNullException(nameof(ticket));
|
||||||
}
|
}
|
||||||
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
var userTicketModel = this.UserTicketDryptor.Decrypt(ticket);
|
||||||
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
var qu = this.Db.Users.Where(m => m.Id == userTicketModel.Id);
|
||||||
if(!qu.Any()) {
|
if(!qu.Any()) {
|
||||||
throw new Exception("没找到票据对应用户");
|
throw new ApiException("没找到票据对应用户");
|
||||||
}
|
}
|
||||||
foreach(var item in qu) {
|
foreach(var item in qu) {
|
||||||
item.Password = nPassword;
|
item.Password = nPassword;
|
||||||
|
@ -162,21 +163,19 @@ namespace FAuth.Controllers.api
|
||||||
/// <returns>是否成功</returns>
|
/// <returns>是否成功</returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public bool AddNewUser(string adminTicket,string userName,string name,string password) {
|
public bool AddNewUser(string adminTicket,string userName,string name,string password) {
|
||||||
if(string.IsNullOrEmpty(adminTicket))
|
if(adminTicket is null)
|
||||||
throw new ArgumentException("必须提供管理票据",nameof(adminTicket));
|
throw new ApiArgumentNullException(nameof(adminTicket));
|
||||||
if(string.IsNullOrEmpty(userName))
|
if(userName is null)
|
||||||
throw new ArgumentException("新用户登录名不能为空",nameof(userName));
|
throw new ApiArgumentNullException(nameof(userName));
|
||||||
if(string.IsNullOrEmpty(name))
|
if(password is null)
|
||||||
throw new ArgumentException("用户姓名不能为空",nameof(name));
|
throw new ApiArgumentNullException(nameof(password));
|
||||||
if(string.IsNullOrEmpty(password))
|
|
||||||
throw new ArgumentException("密码不能为空",nameof(password));
|
|
||||||
|
|
||||||
if(this.Account.IsNotSystemAdmin(adminTicket)) {
|
if(this.Account.IsNotSystemAdmin(adminTicket)) {
|
||||||
throw new Exception($"用户必须在应用FAuth中具有Admin角色!");
|
throw new ApiException($"用户必须在应用FAuth中具有Admin角色!");
|
||||||
}
|
}
|
||||||
var qu = this.Db.Users.Where(m => m.UserName == userName);
|
var qu = this.Db.Users.Where(m => m.UserName == userName);
|
||||||
if(qu.Any()) {
|
if(qu.Any()) {
|
||||||
throw new Exception("用户登录名已经存在,不能重复添加");
|
throw new ApiException("用户登录名已经存在,不能重复添加");
|
||||||
}
|
}
|
||||||
var nUser = new FUser {
|
var nUser = new FUser {
|
||||||
Name = name,
|
Name = name,
|
||||||
|
@ -198,19 +197,19 @@ namespace FAuth.Controllers.api
|
||||||
/// <returns>是否成功。成功True 否则返回False</returns>
|
/// <returns>是否成功。成功True 否则返回False</returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public bool ResetUserPassword(string adminTicket,string userName,string newPassword) {
|
public bool ResetUserPassword(string adminTicket,string userName,string newPassword) {
|
||||||
if(string.IsNullOrEmpty(adminTicket))
|
if(adminTicket is null)
|
||||||
throw new ArgumentException("必须提供管理票据",nameof(adminTicket));
|
throw new ApiArgumentNullException(nameof(adminTicket));
|
||||||
if(string.IsNullOrEmpty(userName))
|
if(userName is null)
|
||||||
throw new ArgumentException("新用户登录名不能为空",nameof(userName));
|
throw new ApiArgumentNullException(nameof(userName));
|
||||||
if(string.IsNullOrEmpty(newPassword))
|
if(newPassword is null)
|
||||||
throw new ArgumentException("密码不能为空",nameof(newPassword));
|
throw new ApiArgumentNullException(nameof(newPassword));
|
||||||
|
|
||||||
if(this.Account.IsNotSystemAdmin(adminTicket)) {
|
if(this.Account.IsNotSystemAdmin(adminTicket)) {
|
||||||
throw new Exception($"用户必须在应用FAuth中具有Admin角色!");
|
throw new ApiException($"用户必须在应用FAuth中具有Admin角色!");
|
||||||
}
|
}
|
||||||
var qu = this.Db.Users.Where(m => m.UserName == userName);
|
var qu = this.Db.Users.Where(m => m.UserName == userName);
|
||||||
if(!qu.Any()) {
|
if(!qu.Any()) {
|
||||||
throw new Exception("用户登录名不存在");
|
throw new ApiException("用户登录名不存在");
|
||||||
}
|
}
|
||||||
foreach(var item in qu) {
|
foreach(var item in qu) {
|
||||||
item.Password = newPassword;
|
item.Password = newPassword;
|
||||||
|
|
11
FAuth/Extensions/ApiArgumentNullException.cs
Normal file
11
FAuth/Extensions/ApiArgumentNullException.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
namespace FAuth.Extensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 表示请求的参数为空错误
|
||||||
|
/// </summary>
|
||||||
|
public class ApiArgumentNullException:ApiException
|
||||||
|
{
|
||||||
|
public ApiArgumentNullException(string msg) : base($"{msg} 参数不能为空") {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
FAuth/Extensions/ApiException.cs
Normal file
16
FAuth/Extensions/ApiException.cs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace FAuth.Extensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 表示请求错误,服务器无法处理
|
||||||
|
/// </summary>
|
||||||
|
public class ApiException:Exception
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 通过提供异常信息,返回api错误异常
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
public ApiException(string msg) : base(msg) { }
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,7 +25,11 @@ namespace FAuth.Extensions
|
||||||
Message = context.Exception.Message,
|
Message = context.Exception.Message,
|
||||||
Id = id,
|
Id = id,
|
||||||
};
|
};
|
||||||
context.Result = new JsonResult(result) { StatusCode = StatusCodes.Status500InternalServerError };
|
var sc =
|
||||||
|
context.Exception is ApiException ? StatusCodes.Status400BadRequest :
|
||||||
|
StatusCodes.Status500InternalServerError;
|
||||||
|
|
||||||
|
context.Result = new JsonResult(result) { StatusCode = sc };
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user