parent
3087f40316
commit
eb0479552c
|
|
@ -66,6 +66,7 @@ namespace Learn.Archives.API.Controllers
|
||||||
AccessToken = JwtHelper.GetToken(AppCommon.Config.AuthKey,
|
AccessToken = JwtHelper.GetToken(AppCommon.Config.AuthKey,
|
||||||
[
|
[
|
||||||
new Claim(ClaimEnum.Role,admin.RoleId.ToString()),
|
new Claim(ClaimEnum.Role,admin.RoleId.ToString()),
|
||||||
|
new Claim(ClaimEnum.UserId,admin.RoleId.ToString()),
|
||||||
new Claim(ClaimEnum.Id, admin.Id.ToString()),
|
new Claim(ClaimEnum.Id, admin.Id.ToString()),
|
||||||
new Claim(ClaimEnum.Name, admin.Name),
|
new Claim(ClaimEnum.Name, admin.Name),
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
using Learn.Archives.API.Controllers.Dto;
|
|
||||||
using Learn.Archives.API.Expand;
|
|
||||||
using Learn.Archives.Core.Common;
|
|
||||||
using Learn.Archives.Core.Model;
|
|
||||||
using Learn.Archives.Core.Model.Dto;
|
|
||||||
using Mapster;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Security.Claims;
|
|
||||||
using UserCenter.Model;
|
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
||||||
|
|
||||||
namespace Learn.Archives.API.Controllers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 班级控制器
|
|
||||||
/// </summary>
|
|
||||||
public class ClassController : BackController<Classes>
|
|
||||||
{
|
|
||||||
readonly Repository<Classes> baseService;
|
|
||||||
readonly LiveUserInfo userInfo;
|
|
||||||
public ClassController(Repository<Classes> baseService, LiveUserInfo userInfo) : base(baseService)
|
|
||||||
{
|
|
||||||
this.baseService = baseService;
|
|
||||||
this.userInfo = userInfo;
|
|
||||||
}
|
|
||||||
public override async Task<dynamic> PageList([FromBody] QueryRequestBase model)
|
|
||||||
{
|
|
||||||
var res = (PageResult<Classes>) await base.PageList(model);
|
|
||||||
return new PageResult<ClassDto>() { Data = res.Data.Adapt<List<ClassDto>>(), Total = res.Total };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
using Learn.Archives.API.Controllers.Dto;
|
|
||||||
using Learn.Archives.API.Expand;
|
|
||||||
using Learn.Archives.Core.Common;
|
|
||||||
using Learn.Archives.Core.Model;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Security.Claims;
|
|
||||||
using UserCenter.Model;
|
|
||||||
|
|
||||||
namespace Learn.Archives.API.Controllers
|
|
||||||
{
|
|
||||||
public class SchoolController : BackController<School>
|
|
||||||
{
|
|
||||||
readonly Repository<School> baseService;
|
|
||||||
public SchoolController(Repository<School> baseService) : base(baseService)
|
|
||||||
{
|
|
||||||
this.baseService = baseService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Task<bool> Del([FromBody] params long[] ids)
|
|
||||||
{
|
|
||||||
return base.Del(ids);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -45,7 +45,8 @@ namespace Learn.Archives.API.Controllers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet()]
|
||||||
|
[Route("/api/[controller]/{id}")]
|
||||||
public virtual async Task<dynamic> Info(long id)
|
public virtual async Task<dynamic> Info(long id)
|
||||||
{
|
{
|
||||||
return await _baseRepository.GetByIdAsync(id);
|
return await _baseRepository.GetByIdAsync(id);
|
||||||
|
|
@ -139,8 +140,8 @@ namespace Learn.Archives.API.Controllers
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public virtual async Task<List<ComboModel>> QueryCombo([FromBody] QueryCombo model)
|
public virtual async Task<List<ComboModel>> QueryCombo([FromBody] QueryCombo model)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(model.ValueName) || string.IsNullOrEmpty(model.TextName))
|
//if (string.IsNullOrEmpty(model.ValueName) || string.IsNullOrEmpty(model.TextName))
|
||||||
Oh.ModelError("ValueName TextName 是必填项");
|
// Oh.ModelError("ValueName TextName 是必填项");
|
||||||
var sqlquery = BaseQuery(model);
|
var sqlquery = BaseQuery(model);
|
||||||
var res = await sqlquery.Select<ComboModel>($"{model.TextName} as Text , {model.ValueName} as Value").ToListAsync();
|
var res = await sqlquery.Select<ComboModel>($"{model.TextName} as Text , {model.ValueName} as Value").ToListAsync();
|
||||||
return res;
|
return res;
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ namespace Learn.Archives.API.Expand
|
||||||
{
|
{
|
||||||
options.RequireHttpsMetadata = false;
|
options.RequireHttpsMetadata = false;
|
||||||
options.UseSecurityTokenValidators = true;
|
options.UseSecurityTokenValidators = true;
|
||||||
|
options.MapInboundClaims = false; // .NET 5+
|
||||||
|
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
|
||||||
options.TokenValidationParameters = new TokenValidationParameters
|
options.TokenValidationParameters = new TokenValidationParameters
|
||||||
{
|
{
|
||||||
SaveSigninToken = false,//保存token,后台验证token是否生效(重要)
|
SaveSigninToken = false,//保存token,后台验证token是否生效(重要)
|
||||||
|
|
@ -47,18 +49,14 @@ namespace Learn.Archives.API.Expand
|
||||||
},
|
},
|
||||||
OnAuthenticationFailed = context =>
|
OnAuthenticationFailed = context =>
|
||||||
{
|
{
|
||||||
context.Response.Clear();
|
|
||||||
context.Response.ContentType = "application/json";
|
|
||||||
context.Response.StatusCode = 403;
|
context.Response.StatusCode = 403;
|
||||||
var data = new BaseReturn() { Code = 403, Message = context.Exception.Message + context.Exception?.StackTrace };
|
|
||||||
context.Response.WriteAsync(data.ToJson());
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
},
|
},
|
||||||
OnChallenge = context =>
|
OnChallenge = context =>
|
||||||
{
|
{
|
||||||
if(context.Response.StatusCode == 403 || context.Response.StatusCode == 401)
|
|
||||||
return Task.CompletedTask;
|
|
||||||
context.HandleResponse();
|
context.HandleResponse();
|
||||||
|
if (context.Response.StatusCode == 403)
|
||||||
|
return Task.CompletedTask;
|
||||||
context.Response.Clear();
|
context.Response.Clear();
|
||||||
context.Response.ContentType = "application/json";
|
context.Response.ContentType = "application/json";
|
||||||
context.Response.StatusCode = 401;
|
context.Response.StatusCode = 401;
|
||||||
|
|
|
||||||
|
|
@ -55,9 +55,10 @@ app.UseRouting();
|
||||||
|
|
||||||
//自定义 应用
|
//自定义 应用
|
||||||
app.UseCorsExpand();
|
app.UseCorsExpand();
|
||||||
|
app.UseAuthorization();
|
||||||
|
|
||||||
app.UseSqlSugarExpand();
|
app.UseSqlSugarExpand();
|
||||||
|
|
||||||
app.UseAuthorization();
|
|
||||||
|
|
||||||
app.MapControllers();
|
app.MapControllers();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
"UpdateTable": false
|
"UpdateTable": false
|
||||||
},
|
},
|
||||||
"AuthKey": {
|
"AuthKey": {
|
||||||
"Secret": "9FAB7AC7-F2DB-4C52-B81F-044055A34AF2",
|
"Secret": "9FAB7AC7-F1DB-4C56-B84F-044055A34AF2",
|
||||||
"Issuer": "Learn.Archive", //签发人
|
"Issuer": "Learn.Archive", //签发人
|
||||||
"Audience": "Admin",
|
"Audience": "Admin",
|
||||||
"Expires": 120 // 过期时间120小时
|
"Expires": 120 // 过期时间120小时
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,22 @@ namespace Learn.Archives.Core.Common
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SimpLetexConfig SimpLetex { get; set; } = new SimpLetexConfig();
|
public SimpLetexConfig SimpLetex { get; set; } = new SimpLetexConfig();
|
||||||
|
|
||||||
}
|
/// <summary>
|
||||||
|
/// 用户中心服务配置
|
||||||
|
/// </summary>
|
||||||
|
public UserCenterServiceConfig UserCenterService { get; set; } = new UserCenterServiceConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 用户中心服务配置
|
||||||
|
/// </summary>
|
||||||
|
public class UserCenterServiceConfig
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// api请求地址
|
||||||
|
/// </summary>
|
||||||
|
public string API { get; set; }
|
||||||
|
}
|
||||||
public class AuthKeyConfig
|
public class AuthKeyConfig
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,6 @@ namespace Learn.Archives.Core.Common
|
||||||
{
|
{
|
||||||
public class Authentication
|
public class Authentication
|
||||||
{
|
{
|
||||||
public const string Admin = "Admin";
|
public const string Admin = "admin";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
public static string PositionId => "position";
|
public static string PositionId => "position";
|
||||||
public static string UserId => "user";
|
public static string UserId => "user";
|
||||||
public static string Id => "id";
|
public static string Id => "id";
|
||||||
public static string Role => "roleid";
|
public static string Role => "role";
|
||||||
public static string Scope => "scope";
|
public static string Scope => "scope";
|
||||||
public static string Name => "name";
|
public static string Name => "name";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
||||||
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.170" />
|
<PackageReference Include="SqlSugarCore" Version="5.1.4.170" />
|
||||||
|
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||||
<PackageReference Include="UserCenter.Model" Version="1.4.1" />
|
<PackageReference Include="UserCenter.Model" Version="1.4.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -45,13 +45,13 @@ namespace Learn.Archives.Core.Model.Dto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 值对应属性名称
|
/// 值对应属性名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "{0}是必填项")]
|
[Required(ErrorMessage = "{0}是必填项")]
|
||||||
public string ValueName { get; set; }
|
public string ValueName { get; set; } = "Id";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文本对应属性名称
|
/// 文本对应属性名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "{0}是必填项")]
|
[Required(ErrorMessage = "{0}是必填项")]
|
||||||
public string TextName { get; set; }
|
public string TextName { get; set; } = "Name";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using System.ComponentModel.DataAnnotations;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using UserCenter.Model;
|
using UserCenter.Model;
|
||||||
|
using UserCenter.Model.Common;
|
||||||
using UserCenter.Model.Enum;
|
using UserCenter.Model.Enum;
|
||||||
using UserCenter.Model.Interface;
|
using UserCenter.Model.Interface;
|
||||||
|
|
||||||
|
|
@ -26,6 +27,11 @@ namespace Learn.Archives.Core.Model
|
||||||
[SugarColumn(Length = 6)]
|
[SugarColumn(Length = 6)]
|
||||||
public int Year { get; set; }
|
public int Year { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 年级名称
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsIgnore =true)]
|
||||||
|
public string Name => GradeHelper.GetGrade(Level.ToString(), Year);
|
||||||
|
/// <summary>
|
||||||
/// 学校名称
|
/// 学校名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(Length = 12)]
|
[SugarColumn(Length = 12)]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue