Browse Source

Merge pull request #95 from colinin/3.1

No navigation properties are required to query the log list
pull/115/head
cKey 5 years ago
committed by GitHub
parent
commit
6d9de7f1f0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      aspnet-core/database/ApiGateway-Init-SqlServer.sql
  2. 8
      aspnet-core/database/ApiGateway-Init.sql
  3. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Logging/IAuditLogAppService.cs
  4. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Security/ISecurityLogAppService.cs
  5. 15
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/Logging/AuditLogAppService.cs
  6. 10
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/Security/SecurityLogAppService.cs
  7. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/AuditLogController.cs
  8. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Security/SecurityLogController.cs
  9. BIN
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db
  10. 10
      vueJs/src/api/auditing.ts
  11. 10
      vueJs/src/views/admin/auditing/audit-log/components/AuditLogDialog.vue
  12. 20
      vueJs/src/views/admin/auditing/audit-log/components/AuditLogProfile.vue
  13. 6
      vueJs/src/views/admin/auditing/audit-log/index.vue
  14. 9
      vueJs/src/views/admin/auditing/security-log/components/SecurityLogDialog.vue
  15. 18
      vueJs/src/views/admin/auditing/security-log/components/SecurityLogProfile.vue
  16. 7
      vueJs/src/views/admin/auditing/security-log/index.vue

6
aspnet-core/database/ApiGateway-Init-SqlServer.sql

File diff suppressed because one or more lines are too long

8
aspnet-core/database/ApiGateway-Init.sql

@ -11,7 +11,7 @@
Target Server Version : 80020
File Encoding : 65001
Date: 28/09/2020 18:35:48
Date: 28/09/2020 20:41:21
*/
SET NAMES utf8mb4;
@ -435,7 +435,7 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (127, 1304679169305694208, NULL,
INSERT INTO `appapigatewaycacheoptions` VALUES (128, 1310460417141817344, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (129, 1310502391475519488, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (130, 1310515546943569920, NULL, NULL);
INSERT INTO `appapigatewaycacheoptions` VALUES (131, 1310515735292985344, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (131, 1310515735292985344, NULL, NULL);
-- ----------------------------
-- Table structure for appapigatewaydiscovery
@ -1062,8 +1062,8 @@ INSERT INTO `appapigatewayreroute` VALUES (133, '{}', '40a150f629b047f587c91a943
INSERT INTO `appapigatewayreroute` VALUES (134, '{}', '3a2d5d538fa44ac690402fc5c4e1a401', 1304679169305694208, '【身份认证服务】- 框架配置', '/api/abp/application-configuration', '', '', '/api/abp/identity-server/application-configuration', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', 'identity-server-configuration', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (135, '{}', '2ecfe7483bc94c28ad0769b654eb765d', 1310460417141817344, '【后台管理】- 审计日志列表', '/api/auditing/audit-log', '', '', '/api/auditing/audit-log', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (136, '{}', '744e340c0024462d88458b7ea9605b3c', 1310502391475519488, '【后台服务】- 安全日志列表', '/api/auditing/security-log', '', '', '/api/auditing/security-log', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (137, '{}', 'ba9455ce031148e98c5ea19317548b16', 1310515546943569920, '【后台服务】- 删除安全日志', '/api/auditing/security-log/{id}', '', '', '/api/auditing/security-log/{id}', 'DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (138, '{}', '2ea67855ef7448859d4d3f2a9a8faa15', 1310515735292985344, '【后台管理】- 删除审计日志', '/api/auditing/audit-log/{id}', '', '', '/api/auditing/audit-log/{id}', 'DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (137, '{}', 'a99639f4172547c4ba9b4f4ca5cb4ab9', 1310515546943569920, '【后台服务】- 安全日志', '/api/auditing/security-log/{id}', '', '', '/api/auditing/security-log/{id}', 'DELETE,GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (138, '{}', 'c3ebc82d55f640fb9d70a911e97e4ec1', 1310515735292985344, '【后台管理】- 审计日志', '/api/auditing/audit-log/{id}', '', '', '/api/auditing/audit-log/{id}', 'DELETE,GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-- ----------------------------
-- Table structure for appapigatewayroutegroup

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Logging/IAuditLogAppService.cs

@ -9,6 +9,8 @@ namespace LINGYUN.Abp.Auditing.Logging
{
Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input);
Task<AuditLogDto> GetAsync(Guid id);
Task DeleteAsync(Guid id);
}
}

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Security/ISecurityLogAppService.cs

@ -9,6 +9,8 @@ namespace LINGYUN.Abp.Auditing.Security
{
Task<PagedResultDto<SecurityLogDto>> GetListAsync(SecurityLogGetByPagedDto input);
Task<SecurityLogDto> GetAsync(Guid id);
Task DeleteAsync(Guid id);
}
}

15
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/Logging/AuditLogAppService.cs

@ -22,6 +22,13 @@ namespace LINGYUN.Abp.Auditing.Logging
AuditLogRepository = auditLogRepository;
}
public virtual async Task<AuditLogDto> GetAsync(Guid id)
{
var auditLog = await AuditLogRepository.GetAsync(id, includeDetails: true);
return ObjectMapper.Map<AuditLog, AuditLogDto>(auditLog);
}
public virtual async Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input)
{
var auditLogCount = await AuditLogRepository
@ -30,21 +37,21 @@ namespace LINGYUN.Abp.Auditing.Logging
input.CorrelationId, input.MaxExecutionDuration, input.MinExecutionDuration,
input.HasException, input.HttpStatusCode);
var auditLog = await AuditLogRepository
var auditLogs = await AuditLogRepository
.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount,
input.StartTime, input.EndTime,
input.HttpMethod, input.Url, input.UserName, input.ApplicationName,
input.CorrelationId, input.MaxExecutionDuration, input.MinExecutionDuration,
input.HasException, input.HttpStatusCode, true);
input.HasException, input.HttpStatusCode, includeDetails: false);
return new PagedResultDto<AuditLogDto>(auditLogCount,
ObjectMapper.Map<List<AuditLog>, List<AuditLogDto>>(auditLog));
ObjectMapper.Map<List<AuditLog>, List<AuditLogDto>>(auditLogs));
}
[Authorize(AuditingPermissionNames.AuditLog.Delete)]
public virtual async Task DeleteAsync([Required] Guid id)
{
var auditLog = await AuditLogRepository.GetAsync(id, false);
var auditLog = await AuditLogRepository.GetAsync(id);
await AuditLogRepository.DeleteAsync(auditLog);
await CurrentUnitOfWork.SaveChangesAsync();

10
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/Security/SecurityLogAppService.cs

@ -20,6 +20,13 @@ namespace LINGYUN.Abp.Auditing.Security
SecurityLogRepository = securityLogRepository;
}
public virtual async Task<SecurityLogDto> GetAsync(Guid id)
{
var securityLog = await SecurityLogRepository.GetAsync(id, includeDetails: true);
return ObjectMapper.Map<IdentitySecurityLog, SecurityLogDto>(securityLog);
}
public virtual async Task<PagedResultDto<SecurityLogDto>> GetListAsync(SecurityLogGetByPagedDto input)
{
var securityLogCount = await SecurityLogRepository
@ -32,7 +39,8 @@ namespace LINGYUN.Abp.Auditing.Security
.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount,
input.StartTime, input.EndTime,
input.ApplicationName, input.Identity, input.ActionName,
input.UserId, input.UserName, input.ClientId, input.CorrelationId
input.UserId, input.UserName, input.ClientId, input.CorrelationId,
includeDetails: false
);
return new PagedResultDto<SecurityLogDto>(securityLogCount,

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/AuditLogController.cs

@ -27,6 +27,13 @@ namespace LINGYUN.Abp.Auditing.Logging
await AuditLogAppService.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual async Task<AuditLogDto> GetAsync(Guid id)
{
return await AuditLogAppService.GetAsync(id);
}
[HttpGet]
public virtual async Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input)
{

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Security/SecurityLogController.cs

@ -27,6 +27,13 @@ namespace LINGYUN.Abp.Auditing.Security
await SecurityLogAppService.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual async Task<SecurityLogDto> GetAsync(Guid id)
{
return await SecurityLogAppService.GetAsync(id);
}
[HttpGet]
public virtual async Task<PagedResultDto<SecurityLogDto>> GetListAsync(SecurityLogGetByPagedDto input)
{

BIN
aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db

Binary file not shown.

10
vueJs/src/api/auditing.ts

@ -5,6 +5,11 @@ import { PagedAndSortedResultRequestDto, PagedResultDto } from './types'
const serviceUrl = process.env.VUE_APP_BASE_API
export default class AuditingService {
public static getAuditLogById(id: string) {
const _url = '/api/auditing/audit-log/' + id
return ApiService.Get<AuditLog>(_url, serviceUrl)
}
public static getAuditLogs(payload: AuditLogGetPaged) {
let _url = '/api/auditing/audit-log?'
payload.skipCount = abpPagerFormat(payload.skipCount, payload.maxResultCount)
@ -17,6 +22,11 @@ export default class AuditingService {
return ApiService.Delete(_url, serviceUrl)
}
public static getSecurityLogById(id: string) {
const _url = '/api/auditing/security-log/' + id
return ApiService.Get<SecurityLog>(_url, serviceUrl)
}
public static getSecurityLogs(payload: SecurityLogGetPaged) {
let _url = '/api/auditing/security-log?'
payload.skipCount = abpPagerFormat(payload.skipCount, payload.maxResultCount)

10
vueJs/src/views/admin/auditing/audit-log/components/AuditLogDialog.vue

@ -6,12 +6,11 @@
:close-on-click-modal="true"
@close="onFormClosed"
>
<audit-log-profile :audit-log="auditLog" />
<audit-log-profile :audit-log-id="auditLogId" />
</el-dialog>
</template>
<script lang="ts">
import { AuditLog } from '@/api/auditing'
import { Component, Vue, Prop } from 'vue-property-decorator'
import AuditLogProfile from './AuditLogProfile.vue'
@ -25,13 +24,10 @@ export default class extends Vue {
@Prop({ default: false })
private showDialog!: boolean
@Prop({
default: () => { return {} }
})
private auditLog!: AuditLog
@Prop({ default: '' })
private auditLogId!: string
private onFormClosed() {
console.log('关闭窗口')
this.$emit('closed')
}
}

20
vueJs/src/views/admin/auditing/audit-log/components/AuditLogProfile.vue

@ -204,7 +204,7 @@
<script lang="ts">
import { Component, Vue, Prop, Watch } from 'vue-property-decorator'
import { Action, AuditLog } from '@/api/auditing'
import AuditingService, { Action, AuditLog } from '@/api/auditing'
import { dateFormat } from '@/utils'
import JsonEditor from '@/components/JsonEditor/index.vue'
@ -244,16 +244,20 @@ import JsonEditor from '@/components/JsonEditor/index.vue'
}
})
export default class extends Vue {
@Prop({
default: () => { return {} }
})
private auditLog!: AuditLog
@Prop({ default: '' })
private auditLogId!: string
private auditLog = new AuditLog()
private activedTabItem = 'application'
@Watch('auditLog')
private onAuditLogChanged() {
this.activedTabItem = 'application'
@Watch('auditLogId', { immediate: true })
private onAuditLogIdChanged() {
if (this.auditLogId) {
AuditingService.getAuditLogById(this.auditLogId).then(res => {
this.auditLog = res
this.activedTabItem = 'application'
})
}
}
get hasExtraProperties() {

6
vueJs/src/views/admin/auditing/audit-log/index.vue

@ -268,7 +268,7 @@
/>
<audit-log-dialog
:audit-log="auditLog"
:audit-log-id="auditLogId"
:show-dialog="showAuditLog"
@closed="onAuditLogDialogClosed"
/>
@ -319,7 +319,7 @@ const statusMap: { [key: string]: string } = {
}
})
export default class extends mixins(DataListMiXin) {
private auditLog = new AuditLog()
private auditLogId = ''
private showAuditLog = false
public dataFilter = new AuditLogGetPaged()
@ -333,7 +333,7 @@ export default class extends mixins(DataListMiXin) {
}
private handleShowAuditLogDialog(auditLog: AuditLog) {
this.auditLog = auditLog
this.auditLogId = auditLog.id
this.showAuditLog = true
}

9
vueJs/src/views/admin/auditing/security-log/components/SecurityLogDialog.vue

@ -6,12 +6,11 @@
:close-on-click-modal="true"
@close="onFormClosed"
>
<security-log-profile :security-log="securityLog" />
<security-log-profile :security-log-id="securityLogId" />
</el-dialog>
</template>
<script lang="ts">
import { SecurityLog } from '@/api/auditing'
import { Component, Vue, Prop } from 'vue-property-decorator'
import SecurityLogProfile from './SecurityLogProfile.vue'
@ -25,10 +24,8 @@ export default class extends Vue {
@Prop({ default: false })
private showDialog!: boolean
@Prop({
default: () => { return {} }
})
private securityLog!: SecurityLog
@Prop({ default: '' })
private securityLogId!: string
private onFormClosed() {
this.$emit('closed')

18
vueJs/src/views/admin/auditing/security-log/components/SecurityLogProfile.vue

@ -107,7 +107,7 @@
<script lang="ts">
import { Component, Vue, Prop, Watch } from 'vue-property-decorator'
import { SecurityLog } from '@/api/auditing'
import AuditingService, { SecurityLog } from '@/api/auditing'
import { dateFormat } from '@/utils'
@Component({
@ -121,11 +121,10 @@ import { dateFormat } from '@/utils'
}
})
export default class extends Vue {
@Prop({
default: () => { return {} }
})
private securityLog!: SecurityLog
@Prop({ default: '' })
private securityLogId!: string
private securityLog = new SecurityLog()
private activedTabItem = 'application'
get hasExtraProperties() {
@ -135,9 +134,14 @@ export default class extends Vue {
return false
}
@Watch('securityLog')
@Watch('securityLogId', { immediate: true })
private onSecurityLogChanged() {
this.activedTabItem = 'application'
if (this.securityLogId) {
AuditingService.getSecurityLogById(this.securityLogId).then(res => {
this.securityLog = res
this.activedTabItem = 'application'
})
}
}
}
</script>

7
vueJs/src/views/admin/auditing/security-log/index.vue

@ -229,7 +229,7 @@
/>
<security-log-dialog
:security-log="securityLog"
:security-log-id="securityLogId"
:show-dialog="showSecurityLog"
@closed="onSecurityLogDialogClosed"
/>
@ -255,8 +255,7 @@ import SecurityLogDialog from './components/SecurityLogDialog.vue'
}
})
export default class extends mixins(DataListMiXin) {
private securityLog = new SecurityLog()
private securityLogId = ''
private showSecurityLog = false
public dataFilter = new SecurityLogGetPaged()
@ -269,7 +268,7 @@ export default class extends mixins(DataListMiXin) {
}
private handleShowSecurityLogDialog(securityLog: SecurityLog) {
this.securityLog = securityLog
this.securityLogId = securityLog.id
this.showSecurityLog = true
}

Loading…
Cancel
Save