committed by
GitHub
94 changed files with 1943 additions and 1626 deletions
@ -1,6 +0,0 @@ |
|||
echo Start running commit-msg hook... |
|||
|
|||
# Check whether the git commit information is standardized |
|||
pnpm exec commitlint --edit "$1" |
|||
|
|||
echo Run commit-msg hook done. |
|||
@ -1,3 +0,0 @@ |
|||
# 每次 git pull 之后, 安装依赖 |
|||
|
|||
pnpm install |
|||
@ -1,7 +0,0 @@ |
|||
# update `.vscode/vben-admin.code-workspace` file |
|||
pnpm vsh code-workspace --auto-commit |
|||
|
|||
# Format and submit code according to lintstagedrc.js configuration |
|||
pnpm exec lint-staged |
|||
|
|||
echo Run pre-commit hook done. |
|||
@ -1,20 +0,0 @@ |
|||
export default { |
|||
'*.md': ['prettier --cache --ignore-unknown --write'], |
|||
'*.vue': [ |
|||
'prettier --write', |
|||
'eslint --cache --fix', |
|||
'stylelint --fix --allow-empty-input', |
|||
], |
|||
'*.{js,jsx,ts,tsx}': [ |
|||
'prettier --cache --ignore-unknown --write', |
|||
'eslint --cache --fix', |
|||
], |
|||
'*.{scss,less,styl,html,vue,css}': [ |
|||
'prettier --cache --ignore-unknown --write', |
|||
'stylelint --fix --allow-empty-input', |
|||
], |
|||
'package.json': ['prettier --cache --write'], |
|||
'{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': [ |
|||
'prettier --cache --write--parser json', |
|||
], |
|||
}; |
|||
@ -0,0 +1,3 @@ |
|||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
|||
<ConfigureAwait ContinueOnCapturedContext="false" /> |
|||
</Weavers> |
|||
@ -0,0 +1,20 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\..\configureawait.props" /> |
|||
<Import Project="..\..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net9.0</TargetFramework> |
|||
<AssemblyName>LINGYUN.Abp.AspNetCore.Auditing</AssemblyName> |
|||
<PackageId>LINGYUN.Abp.AspNetCore.Auditing</PackageId> |
|||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,19 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace LINGYUN.Abp.AspNetCore.Auditing; |
|||
public class AbpAspNetCoreAuditingHeaderOptions |
|||
{ |
|||
/// <summary>
|
|||
/// 是否在审计日志中记录Http请求头,默认: true
|
|||
/// </summary>
|
|||
public bool IsEnabled { get; set; } |
|||
/// <summary>
|
|||
/// 要记录的Http请求头
|
|||
/// </summary>
|
|||
public IList<string> HttpHeaders { get; } |
|||
public AbpAspNetCoreAuditingHeaderOptions() |
|||
{ |
|||
IsEnabled = true; |
|||
HttpHeaders = new List<string>(); |
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using Volo.Abp.AspNetCore; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.AspNetCore.Auditing; |
|||
|
|||
[DependsOn(typeof(AbpAspNetCoreModule))] |
|||
public class AbpAspNetCoreAuditingModule : AbpModule |
|||
{ |
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
Configure<AbpAuditingOptions>(options => |
|||
{ |
|||
options.Contributors.Add(new AspNetCoreRecordHeaderAuditLogContributor()); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,51 @@ |
|||
using Microsoft.AspNetCore.Http; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Options; |
|||
using System.Collections.Generic; |
|||
using System.Collections.Immutable; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace LINGYUN.Abp.AspNetCore.Auditing; |
|||
public class AspNetCoreRecordHeaderAuditLogContributor : AuditLogContributor, ITransientDependency |
|||
{ |
|||
private const string HttpHeaderRecordKey = "HttpHeaders"; |
|||
|
|||
public AspNetCoreRecordHeaderAuditLogContributor() |
|||
{ |
|||
} |
|||
|
|||
public override void PreContribute(AuditLogContributionContext context) |
|||
{ |
|||
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpAspNetCoreAuditingHeaderOptions>>(); |
|||
if (!options.Value.IsEnabled) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var httpContext = context.ServiceProvider.GetRequiredService<IHttpContextAccessor>().HttpContext; |
|||
if (httpContext == null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
if (context.AuditInfo.HasProperty(HttpHeaderRecordKey)) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var headerRcords = new Dictionary<string, string>(); |
|||
var httpHeaders = httpContext.Request.Headers.ToImmutableDictionary(); |
|||
|
|||
foreach (var headerKey in options.Value.HttpHeaders) |
|||
{ |
|||
if (httpHeaders.TryGetValue(headerKey, out var headers)) |
|||
{ |
|||
headerRcords[headerKey] = headers.JoinAsString(";"); |
|||
} |
|||
} |
|||
|
|||
context.AuditInfo.SetProperty(HttpHeaderRecordKey, headerRcords); |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
# LINGYUN.Abp.AspNetCore.Auditing |
|||
|
|||
审计日期扩展模块, 用于在审计日志中加入特定的Http请求头记录 |
|||
|
|||
## 模块引用 |
|||
|
|||
|
|||
```csharp |
|||
[DependsOn(typeof(AbpAspNetCoreAuditingModule))] |
|||
public class YouProjectModule : AbpModule |
|||
{ |
|||
// other |
|||
} |
|||
``` |
|||
|
|||
## 配置项 |
|||
|
|||
* AbpAspNetCoreAuditingHeaderOptions.IsEnabled 是否在审计日志中记录Http请求头,默认: true |
|||
* AbpAspNetCoreAuditingHeaderOptions.HttpHeaders 需要在审计日志中记录的Http请求头列表 |
|||
@ -1,19 +0,0 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Content; |
|||
|
|||
namespace LINGYUN.Abp.OssManagement; |
|||
|
|||
public interface IFileAppService : IApplicationService |
|||
{ |
|||
Task<OssObjectDto> UploadAsync(UploadFileInput input); |
|||
|
|||
Task<IRemoteStreamContent> GetAsync(GetPublicFileInput input); |
|||
|
|||
Task<ListResultDto<OssObjectDto>> GetListAsync(GetFilesInput input); |
|||
|
|||
Task UploadChunkAsync(UploadFileChunkInput input); |
|||
|
|||
Task DeleteAsync(GetPublicFileInput input); |
|||
} |
|||
@ -1,5 +1,19 @@ |
|||
namespace LINGYUN.Abp.OssManagement; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Content; |
|||
|
|||
public interface IPublicFileAppService : IFileAppService |
|||
namespace LINGYUN.Abp.OssManagement; |
|||
|
|||
public interface IPublicFileAppService : IApplicationService |
|||
{ |
|||
Task<OssObjectDto> UploadAsync(UploadFileInput input); |
|||
|
|||
Task<IRemoteStreamContent> GetAsync(GetPublicFileInput input); |
|||
|
|||
Task<ListResultDto<OssObjectDto>> GetListAsync(GetFilesInput input); |
|||
|
|||
Task UploadChunkAsync(UploadFileChunkInput input); |
|||
|
|||
Task DeleteAsync(GetPublicFileInput input); |
|||
} |
|||
|
|||
@ -1,9 +1,9 @@ |
|||
{ |
|||
"version": "9.2.0", |
|||
"version": "9.2.3", |
|||
"name": "my-app-single", |
|||
"private": true, |
|||
"dependencies": { |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.0", |
|||
"@abp/qrcode": "9.2.0" |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.3", |
|||
"@abp/qrcode": "9.2.3" |
|||
} |
|||
} |
|||
@ -1,9 +1,9 @@ |
|||
{ |
|||
"version": "9.2.0", |
|||
"version": "9.2.3", |
|||
"name": "my-app-authserver", |
|||
"private": true, |
|||
"dependencies": { |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.0", |
|||
"@abp/qrcode": "9.2.0" |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.3", |
|||
"@abp/qrcode": "9.2.3" |
|||
} |
|||
} |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -1,12 +1,79 @@ |
|||
:"2025-07-05 11:31:41 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Connections] [1] [135] - Connection id \"0HNDQQATBSFQF\" completed keep alive response.\n","stream":"stderr","time":"2025-07-05T03:31:41.530579165Z"} |
|||
{"log":"2025-07-05 11:31:41 [INF] [Microsoft.AspNetCore.Hosting.Diagnostics] [1] [135] - Request finished HTTP/1.1 GET http://localhost/healthz - 500 0 null 3.1038ms\n","stream":"stderr","time":"2025-07-05T03:31:41.530631619Z"} |
|||
{"log":"2025-07-05 11:31:41 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets] [1] [95] - Connection id \"0HNDQQATBSFQF\" received FIN.\n","stream":"stderr","time":"2025-07-05T03:31:41.530770288Z"} |
|||
{"log":"2025-07-05 11:31:41 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets] [1] [95] - Connection id \"0HNDQQATBSFQF\" sending FIN because: \"The Socket transport's send loop completed gracefully.\"\n","stream":"stderr","time":"2025-07-05T03:31:41.5309084Z"} |
|||
{"log":"2025-07-05 11:31:41 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Connections] [1] [95] - Connection id \"0HNDQQATBSFQF\" disconnecting.\n","stream":"stderr","time":"2025-07-05T03:31:41.530921423Z"} |
|||
{"log":"2025-07-05 11:31:41 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Connections] [1] [135] - Connection id \"0HNDQQATBSFQF\" stopped.\n","stream":"stderr","time":"2025-07-05T03:31:41.531023048Z"} |
|||
{"log":"2025-07-05 11:31:51 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Connections] [1] [100] - Connection id \"0HNDQQATBSFQG\" accepted.\n","stream":"stderr","time":"2025-07-05T03:31:51.593587844Z"} |
|||
{"log":"2025-07-05 11:31:51 [DBG] [Microsoft.AspNetCore.Server.Kestrel.Connections] [1] [135] - Connection id \"0HNDQQATBSFQG\" started.\n","stream":"stderr","time":"2025-07-05T03:31:51.593608909Z"} |
|||
{"log":"2025-07-05 11:31:51 [INF] [Microsoft.AspNetCore.Hosting.Diagnostics] [1] [135] - Request starting HTTP/1.1 HEAD http://localhost/healthz - null null\n","stream":"stderr","time":"2025-07-05T03:31:51.593735211Z"} |
|||
{"log":"2025-07-05 11:31:51 [DBG] [Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware] [1] [135] - AbpCultureMapRequestCultureProvider returned the following unsupported cultures '[]'.\n","stream":"stderr","time":"2025-07-05T03:31:51.594228126Z"} |
|||
{"log":"2025-07-05 11:31:51 [DBG] [Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware] [1] [135] - AbpCultureMapRequestCultureProvider returned the following unsupported UI Cultures '[]'.\n","stream":"stderr","time":"2025-07-05T03:31:51.594231565Z"} |
|||
{"log":"2025-07-05 11:31:51 [DBG] [Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware] [1] [135] - The request path /healthz does not match a supported file type\n","stream":"st |
|||
//! moment.js locale configuration
|
|||
//! locale : English (Australia) [en-au]
|
|||
//! author : Jared Morse : https://github.com/jarcoal
|
|||
|
|||
;(function (global, factory) { |
|||
typeof exports === 'object' && typeof module !== 'undefined' |
|||
&& typeof require === 'function' ? factory(require('../moment')) : |
|||
typeof define === 'function' && define.amd ? define(['../moment'], factory) : |
|||
factory(global.moment) |
|||
}(this, (function (moment) { 'use strict'; |
|||
|
|||
//! moment.js locale configuration
|
|||
|
|||
var enAu = moment.defineLocale('en-au', { |
|||
months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( |
|||
'_' |
|||
), |
|||
monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), |
|||
weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( |
|||
'_' |
|||
), |
|||
weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), |
|||
weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), |
|||
longDateFormat: { |
|||
LT: 'h:mm A', |
|||
LTS: 'h:mm:ss A', |
|||
L: 'DD/MM/YYYY', |
|||
LL: 'D MMMM YYYY', |
|||
LLL: 'D MMMM YYYY h:mm A', |
|||
LLLL: 'dddd, D MMMM YYYY h:mm A', |
|||
}, |
|||
calendar: { |
|||
sameDay: '[Today at] LT', |
|||
nextDay: '[Tomorrow at] LT', |
|||
nextWeek: 'dddd [at] LT', |
|||
lastDay: '[Yesterday at] LT', |
|||
lastWeek: '[Last] dddd [at] LT', |
|||
sameElse: 'L', |
|||
}, |
|||
relativeTime: { |
|||
future: 'in %s', |
|||
past: '%s ago', |
|||
s: 'a few seconds', |
|||
ss: '%d seconds', |
|||
m: 'a minute', |
|||
mm: '%d minutes', |
|||
h: 'an hour', |
|||
hh: '%d hours', |
|||
d: 'a day', |
|||
dd: '%d days', |
|||
M: 'a month', |
|||
MM: '%d months', |
|||
y: 'a year', |
|||
yy: '%d years', |
|||
}, |
|||
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, |
|||
ordinal: function (number) { |
|||
var b = number % 10, |
|||
output = |
|||
~~((number % 100) / 10) === 1 |
|||
? 'th' |
|||
: b === 1 |
|||
? 'st' |
|||
: b === 2 |
|||
? 'nd' |
|||
: b === 3 |
|||
? 'rd' |
|||
: 'th'; |
|||
return number + output; |
|||
}, |
|||
week: { |
|||
dow: 0, // Sunday is the first day of the week.
|
|||
doy: 4, // The week that contains Jan 4th is the first week of the year.
|
|||
}, |
|||
}); |
|||
|
|||
return enAu; |
|||
|
|||
}))); |
|||
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,9 +1,9 @@ |
|||
{ |
|||
"version": "9.2.0", |
|||
"version": "9.2.3", |
|||
"name": "my-app-identityserver", |
|||
"private": true, |
|||
"dependencies": { |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.0", |
|||
"@abp/qrcode": "~9.2.0" |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.2.3", |
|||
"@abp/qrcode": "~9.2.3" |
|||
} |
|||
} |
|||
File diff suppressed because it is too large
@ -1 +1,3 @@ |
|||
","ebx_topicSuggestionExplanationTitle":"Kay rimanata sutichay huk runakunata imayna kasqanman, runakunaman, churayninkunaman yaykunankupaq.","ebx_repeatedWordsExplanationTitle":"Kay simiqa kutipasqam","ebx_showBeta":"Beta kaypi {0}","ebx_googleDocs":"Google Docs","ebx_indicatorTooltip":"Qillqachaqta kichay utaq clicta ruway alliq ñitinapi aswan akllaykuna qawanapaq","ebx_indicatorTooltipActive":"Editorpi llanpan yacharichiyta qaway utaq clicta ruway alliq ñitinapi aswan akllaykuna qawanapaq","contextAccessibilityLabelForSpelling":"Mana allin qillqasqa, {0}, {1}","contextAccessibilityLabelForRepeatedWord":"Kutipasqa simi, {0}, {1}","contextAccessibilityLabelForGrammar":"Allin rimana pantay, {0}, {1}","contextAccessibilityLabelForRefinement":"Refinamiento rikchay, {0 |
|||
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
|||
|
|||
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); |
|||
Binary file not shown.
Binary file not shown.
@ -1 +1,30 @@ |
|||
olour to ${color} on table ${tableName}",TableBodyRangeFormatSetFontColorLabel:"Set the font colour to ${color} on table ${tableName} body",TableHeaderRowRangeFormatSetFontColorLabel:"Set the font colour to ${color} on table ${tableName} header row",TableTotalRowRangeFormatSetFontColorLabel:"Set the font colour to ${color} on table ${tableName} total row",TableGeneralRangeFormatSetFontColorLabel:"Set the font colour to ${color} on sub-range of table ${tableName}",TableRowsRangeFormatSetFontColorLabel:"Set the font colour to ${color} on ${count} row(s) in table ${tableName}",TableRowByIndexRangeFormatSetFontColorLabel:"Set the font colour to ${color} on row at index ${rowIndex} in table ${tableName}",TableColumnsRangeFormatSetFontColorLabel:"Set the font colour to ${color} on ${count} column(s) in table ${tableName}",TableColumnByNameRangeFormatSetFontColorLabel:"Set the font colour to ${color} on column '${columnName}' in table ${tableName}",TableColumnByIndexRangeFormatSetFontColorLabel:"Set the font colour to ${color} |
|||
(function (factory) { |
|||
if (typeof define === 'function' && define.amd) { |
|||
define(['jquery'], factory); |
|||
} else if (typeof module === 'object' && typeof module.exports === 'object') { |
|||
factory(require('jquery')); |
|||
} else { |
|||
factory(jQuery); |
|||
} |
|||
}(function (jQuery) { |
|||
// Thai
|
|||
jQuery.timeago.settings.strings = { |
|||
prefixAgo: null, |
|||
prefixFromNow: null, |
|||
suffixAgo: "ที่แล้ว", |
|||
suffixFromNow: "จากตอนนี้", |
|||
seconds: "น้อยกว่าหนึ่งนาที", |
|||
minute: "ประมาณหนึ่งนาที", |
|||
minutes: "%d นาที", |
|||
hour: "ประมาณหนึ่งชั่วโมง", |
|||
hours: "ประมาณ %d ชั่วโมง", |
|||
day: "หนึ่งวัน", |
|||
days: "%d วัน", |
|||
month: "ประมาณหนึ่งเดือน", |
|||
months: "%d เดือน", |
|||
year: "ประมาณหนึ่งปี", |
|||
years: "%d ปี", |
|||
wordSeparator: "", |
|||
numbers: [] |
|||
}; |
|||
})); |
|||
|
|||
Loading…
Reference in new issue