diff --git a/aspnet-core/database/ApiGateway-Init-SqlServer.sql b/aspnet-core/database/ApiGateway-Init-SqlServer.sql index 48661dadc..024356fbc 100644 --- a/aspnet-core/database/ApiGateway-Init-SqlServer.sql +++ b/aspnet-core/database/ApiGateway-Init-SqlServer.sql @@ -11,7 +11,7 @@ Target Server Version : 12000000 File Encoding : 65001 - Date: 15/10/2020 21:37:17 + Date: 22/10/2020 17:33:57 */ @@ -120,7 +120,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewayauthoptions] VALUES (N'3', N'1261299170387169280', NULL, N''), (N'4', N'1261585859064872960', NULL, N''), (N'5', N'1261586605810368512', NULL, N''), (N'6', N'1261587558609436672', NULL, N''), (N'7', N'1261588213298348032', NULL, N''), (N'8', N'1261588367619375104', NULL, N''), (N'9', N'1261588628450557952', NULL, N''), (N'10', N'1261588881564221440', NULL, N''), (N'11', N'1261588983053795328', NULL, N''), (N'12', N'1261589139039961088', NULL, N''), (N'13', N'1261589197483393024', NULL, N''), (N'14', N'1261589278857084928', NULL, N''), (N'15', N'1261589420356124672', NULL, N''), (N'16', N'1261589960393736192', NULL, N''), (N'17', N'1261606600242085888', NULL, N''), (N'18', N'1261606689601732608', NULL, N''), (N'21', N'1262220447629058048', NULL, N''), (N'22', N'1262230734939758592', NULL, N''), (N'23', N'1262296916350869504', NULL, N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'26', N'1262632904575045632', N'', N''), (N'27', N'1262632976616411136', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'50', N'1262936009924481024', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'', N''), (N'119', N'1299273436282585088', N'', N''), (N'120', N'1299273618470567936', N'', N''), (N'121', N'1299273770182737920', N'', N''), (N'122', N'1299273978023084032', N'', N''), (N'123', N'1299274123225694208', N'', N''), (N'124', N'1299274222299348992', N'', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N'') +INSERT INTO [apigateway].[appapigatewayauthoptions] VALUES (N'3', N'1261299170387169280', NULL, N''), (N'4', N'1261585859064872960', NULL, N''), (N'5', N'1261586605810368512', NULL, N''), (N'6', N'1261587558609436672', NULL, N''), (N'7', N'1261588213298348032', NULL, N''), (N'8', N'1261588367619375104', NULL, N''), (N'9', N'1261588628450557952', NULL, N''), (N'10', N'1261588881564221440', NULL, N''), (N'11', N'1261588983053795328', NULL, N''), (N'12', N'1261589139039961088', NULL, N''), (N'13', N'1261589197483393024', NULL, N''), (N'14', N'1261589278857084928', NULL, N''), (N'15', N'1261589420356124672', NULL, N''), (N'16', N'1261589960393736192', NULL, N''), (N'17', N'1261606600242085888', NULL, N''), (N'18', N'1261606689601732608', NULL, N''), (N'21', N'1262220447629058048', NULL, N''), (N'22', N'1262230734939758592', NULL, N''), (N'23', N'1262296916350869504', NULL, N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'', N''), (N'119', N'1299273436282585088', N'', N''), (N'120', N'1299273618470567936', N'', N''), (N'121', N'1299273770182737920', N'', N''), (N'122', N'1299273978023084032', N'', N''), (N'123', N'1299274123225694208', N'', N''), (N'124', N'1299274222299348992', N'', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N'') GO COMMIT @@ -151,7 +151,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewaybalanceroptions] VALUES (N'1', N'1260841964962947072', NULL, N'LeastConnection', NULL, NULL), (N'4', NULL, N'1261299170387169280', N'LeastConnection', NULL, N'60000'), (N'5', NULL, N'1261585859064872960', NULL, NULL, NULL), (N'6', NULL, N'1261586605810368512', NULL, NULL, NULL), (N'7', NULL, N'1261587558609436672', NULL, NULL, NULL), (N'8', NULL, N'1261588213298348032', NULL, NULL, NULL), (N'9', NULL, N'1261588367619375104', NULL, NULL, NULL), (N'10', NULL, N'1261588628450557952', NULL, NULL, NULL), (N'11', NULL, N'1261588881564221440', NULL, NULL, NULL), (N'12', NULL, N'1261588983053795328', NULL, NULL, NULL), (N'13', NULL, N'1261589139039961088', NULL, NULL, NULL), (N'14', NULL, N'1261589197483393024', NULL, NULL, NULL), (N'15', NULL, N'1261589278857084928', NULL, NULL, NULL), (N'16', NULL, N'1261589420356124672', NULL, NULL, NULL), (N'17', NULL, N'1261589960393736192', N'LeastConnection', NULL, N'60000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', NULL, NULL, NULL), (N'23', NULL, N'1262230734939758592', NULL, NULL, NULL), (N'24', NULL, N'1262296916350869504', NULL, NULL, NULL), (N'25', NULL, N'1262632376348594176', N'', N'', N'0'), (N'26', NULL, N'1262632791869902848', N'', N'', N'0'), (N'27', NULL, N'1262632904575045632', N'', N'', N'0'), (N'28', NULL, N'1262632976616411136', N'', N'', N'0'), (N'29', NULL, N'1262660336921235456', N'', N'', N'0'), (N'30', NULL, N'1262660528277966848', N'', N'', N'0'), (N'31', NULL, N'1262660706875625472', N'', N'', N'0'), (N'32', NULL, N'1262660966393991168', N'', N'', N'0'), (N'33', NULL, N'1262661109474283520', N'', N'', N'0'), (N'34', NULL, N'1262663888804663296', N'', N'', N'0'), (N'35', NULL, N'1262664024096133120', N'', N'', N'0'), (N'36', NULL, N'1262664186252120064', N'', N'', N'0'), (N'37', NULL, N'1262664357044178944', N'', N'', N'0'), (N'38', NULL, N'1262664632928718848', N'', N'', N'0'), (N'39', NULL, N'1262664751409418240', N'', N'', N'0'), (N'40', NULL, N'1262664871274237952', N'', N'', N'0'), (N'41', NULL, N'1262665026111164416', N'', N'', N'0'), (N'42', NULL, N'1262665159905267712', N'', N'', N'0'), (N'43', NULL, N'1262665329829105664', N'', N'', N'0'), (N'44', NULL, N'1262665456471920640', N'', N'', N'0'), (N'45', NULL, N'1262665628165754880', N'', N'', N'0'), (N'46', NULL, N'1262666172682883072', N'', N'', N'0'), (N'48', NULL, N'1262723402331885568', N'', N'', N'0'), (N'49', NULL, N'1262935771746734080', N'', N'', N'0'), (N'50', NULL, N'1262935906522304512', N'', N'', N'0'), (N'51', NULL, N'1262936009924481024', N'', N'', N'0'), (N'53', NULL, N'1263074419073593344', N'', N'', N'0'), (N'54', NULL, N'1263075249394790400', N'', N'', N'0'), (N'55', NULL, N'1263075593499684864', N'', N'', N'0'), (N'57', NULL, N'1263101898440146944', N'', N'', N'0'), (N'58', NULL, N'1263303878648569856', N'', N'', N'0'), (N'59', NULL, N'1263304204797648896', N'', N'', N'0'), (N'60', NULL, N'1263304872891555840', N'', N'', N'0'), (N'61', NULL, N'1263305106250047488', N'', N'', N'0'), (N'62', NULL, N'1263305244594970624', N'', N'', N'0'), (N'63', NULL, N'1263305430536855552', N'', N'', N'0'), (N'64', NULL, N'1263639172959174656', N'', N'', N'0'), (N'65', NULL, N'1264799968944640000', N'', N'', N'0'), (N'66', NULL, N'1264800070161584128', N'', N'', N'0'), (N'68', NULL, N'1267360794414161920', N'', N'', N'0'), (N'69', NULL, N'1267383367629807616', N'', N'', N'0'), (N'70', NULL, N'1267817055527632896', N'', N'', N'0'), (N'71', NULL, N'1267817221286526976', N'', N'', N'0'), (N'72', NULL, N'1268893687085518848', N'', N'', N'0'), (N'97', NULL, N'1288657613998579712', N'LeastConnection', N'', N'60000'), (N'98', NULL, N'1288657941770854400', N'', N'', N'0'), (N'99', NULL, N'1288658134067109888', N'', N'', N'0'), (N'100', NULL, N'1288658305156964352', N'', N'', N'0'), (N'101', NULL, N'1288658491216289792', N'', N'', N'0'), (N'102', NULL, N'1288658638302142464', N'', N'', N'0'), (N'103', NULL, N'1288658791784308736', N'', N'', N'0'), (N'104', NULL, N'1290849478956199936', N'', N'', N'0'), (N'105', NULL, N'1290849628051124224', N'', N'', N'0'), (N'106', NULL, N'1290849798553776128', N'', N'', N'0'), (N'108', NULL, N'1291259822512693248', N'', N'', N'0'), (N'109', NULL, N'1292620505149145088', N'', N'', N'0'), (N'110', NULL, N'1292620665505775616', N'', N'', N'0'), (N'111', NULL, N'1292620843398791168', N'', N'', N'0'), (N'112', NULL, N'1292621027574874112', N'', N'', N'0'), (N'113', NULL, N'1292621363161137152', N'', N'', N'0'), (N'114', NULL, N'1292621494837116928', N'', N'', N'0'), (N'115', NULL, N'1292621629260365824', N'', N'', N'0'), (N'116', NULL, N'1292622526073864192', N'', N'', N'0'), (N'117', NULL, N'1293470838745821184', N'', N'', N'0'), (N'118', NULL, N'1293471661785706496', N'', N'', N'0'), (N'119', NULL, N'1293472678392721408', N'', N'', N'0'), (N'120', NULL, N'1293472857510473728', N'', N'', N'0'), (N'121', NULL, N'1299273336009359360', N'', N'', N'0'), (N'122', NULL, N'1299273436282585088', N'', N'', N'0'), (N'123', NULL, N'1299273618470567936', N'', N'', N'0'), (N'124', NULL, N'1299273770182737920', N'', N'', N'0'), (N'125', NULL, N'1299273978023084032', N'', N'', N'0'), (N'126', NULL, N'1299274123225694208', N'', N'', N'0'), (N'127', NULL, N'1299274222299348992', N'', N'', N'0'), (N'128', NULL, N'1304238876758495232', N'', N'', N'0'), (N'129', NULL, N'1304678610343383040', N'', N'', N'0'), (N'130', NULL, N'1304679169305694208', N'', N'', N'0'), (N'131', NULL, N'1310460417141817344', N'', N'', N'0'), (N'132', NULL, N'1310502391475519488', N'', N'', N'0'), (N'133', NULL, N'1310515546943569920', N'', N'', N'0'), (N'134', NULL, N'1310515735292985344', N'', N'', N'0'), (N'135', NULL, N'1316628769783480320', N'', N'', N'0'), (N'136', NULL, N'1316628940663619584', N'', N'', N'0'), (N'137', NULL, N'1316629112428756992', N'', N'', N'0'), (N'138', NULL, N'1316652047017246720', N'', N'', N'0') +INSERT INTO [apigateway].[appapigatewaybalanceroptions] VALUES (N'1', N'1260841964962947072', NULL, N'LeastConnection', NULL, NULL), (N'4', NULL, N'1261299170387169280', N'LeastConnection', NULL, N'60000'), (N'5', NULL, N'1261585859064872960', NULL, NULL, NULL), (N'6', NULL, N'1261586605810368512', NULL, NULL, NULL), (N'7', NULL, N'1261587558609436672', NULL, NULL, NULL), (N'8', NULL, N'1261588213298348032', NULL, NULL, NULL), (N'9', NULL, N'1261588367619375104', NULL, NULL, NULL), (N'10', NULL, N'1261588628450557952', NULL, NULL, NULL), (N'11', NULL, N'1261588881564221440', NULL, NULL, NULL), (N'12', NULL, N'1261588983053795328', NULL, NULL, NULL), (N'13', NULL, N'1261589139039961088', NULL, NULL, NULL), (N'14', NULL, N'1261589197483393024', NULL, NULL, NULL), (N'15', NULL, N'1261589278857084928', NULL, NULL, NULL), (N'16', NULL, N'1261589420356124672', NULL, NULL, NULL), (N'17', NULL, N'1261589960393736192', N'LeastConnection', NULL, N'60000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', NULL, NULL, NULL), (N'23', NULL, N'1262230734939758592', NULL, NULL, NULL), (N'24', NULL, N'1262296916350869504', NULL, NULL, NULL), (N'25', NULL, N'1262632376348594176', N'', N'', N'0'), (N'26', NULL, N'1262632791869902848', N'', N'', N'0'), (N'29', NULL, N'1262660336921235456', N'', N'', N'0'), (N'30', NULL, N'1262660528277966848', N'', N'', N'0'), (N'31', NULL, N'1262660706875625472', N'', N'', N'0'), (N'32', NULL, N'1262660966393991168', N'', N'', N'0'), (N'33', NULL, N'1262661109474283520', N'', N'', N'0'), (N'34', NULL, N'1262663888804663296', N'', N'', N'0'), (N'35', NULL, N'1262664024096133120', N'', N'', N'0'), (N'36', NULL, N'1262664186252120064', N'', N'', N'0'), (N'37', NULL, N'1262664357044178944', N'', N'', N'0'), (N'38', NULL, N'1262664632928718848', N'', N'', N'0'), (N'39', NULL, N'1262664751409418240', N'', N'', N'0'), (N'40', NULL, N'1262664871274237952', N'', N'', N'0'), (N'41', NULL, N'1262665026111164416', N'', N'', N'0'), (N'42', NULL, N'1262665159905267712', N'', N'', N'0'), (N'43', NULL, N'1262665329829105664', N'', N'', N'0'), (N'44', NULL, N'1262665456471920640', N'', N'', N'0'), (N'45', NULL, N'1262665628165754880', N'', N'', N'0'), (N'46', NULL, N'1262666172682883072', N'', N'', N'0'), (N'48', NULL, N'1262723402331885568', N'', N'', N'0'), (N'49', NULL, N'1262935771746734080', N'', N'', N'0'), (N'50', NULL, N'1262935906522304512', N'', N'', N'0'), (N'53', NULL, N'1263074419073593344', N'', N'', N'0'), (N'54', NULL, N'1263075249394790400', N'', N'', N'0'), (N'55', NULL, N'1263075593499684864', N'', N'', N'0'), (N'57', NULL, N'1263101898440146944', N'', N'', N'0'), (N'58', NULL, N'1263303878648569856', N'', N'', N'0'), (N'59', NULL, N'1263304204797648896', N'', N'', N'0'), (N'60', NULL, N'1263304872891555840', N'', N'', N'0'), (N'61', NULL, N'1263305106250047488', N'', N'', N'0'), (N'62', NULL, N'1263305244594970624', N'', N'', N'0'), (N'63', NULL, N'1263305430536855552', N'', N'', N'0'), (N'64', NULL, N'1263639172959174656', N'', N'', N'0'), (N'65', NULL, N'1264799968944640000', N'', N'', N'0'), (N'66', NULL, N'1264800070161584128', N'', N'', N'0'), (N'68', NULL, N'1267360794414161920', N'', N'', N'0'), (N'69', NULL, N'1267383367629807616', N'', N'', N'0'), (N'70', NULL, N'1267817055527632896', N'', N'', N'0'), (N'71', NULL, N'1267817221286526976', N'', N'', N'0'), (N'72', NULL, N'1268893687085518848', N'', N'', N'0'), (N'97', NULL, N'1288657613998579712', N'LeastConnection', N'', N'60000'), (N'98', NULL, N'1288657941770854400', N'', N'', N'0'), (N'99', NULL, N'1288658134067109888', N'', N'', N'0'), (N'100', NULL, N'1288658305156964352', N'', N'', N'0'), (N'101', NULL, N'1288658491216289792', N'', N'', N'0'), (N'102', NULL, N'1288658638302142464', N'', N'', N'0'), (N'103', NULL, N'1288658791784308736', N'', N'', N'0'), (N'104', NULL, N'1290849478956199936', N'', N'', N'0'), (N'105', NULL, N'1290849628051124224', N'', N'', N'0'), (N'106', NULL, N'1290849798553776128', N'', N'', N'0'), (N'108', NULL, N'1291259822512693248', N'', N'', N'0'), (N'109', NULL, N'1292620505149145088', N'', N'', N'0'), (N'110', NULL, N'1292620665505775616', N'', N'', N'0'), (N'111', NULL, N'1292620843398791168', N'', N'', N'0'), (N'112', NULL, N'1292621027574874112', N'', N'', N'0'), (N'113', NULL, N'1292621363161137152', N'', N'', N'0'), (N'114', NULL, N'1292621494837116928', N'', N'', N'0'), (N'115', NULL, N'1292621629260365824', N'', N'', N'0'), (N'116', NULL, N'1292622526073864192', N'', N'', N'0'), (N'117', NULL, N'1293470838745821184', N'', N'', N'0'), (N'118', NULL, N'1293471661785706496', N'', N'', N'0'), (N'119', NULL, N'1293472678392721408', N'', N'', N'0'), (N'120', NULL, N'1293472857510473728', N'', N'', N'0'), (N'121', NULL, N'1299273336009359360', N'', N'', N'0'), (N'122', NULL, N'1299273436282585088', N'', N'', N'0'), (N'123', NULL, N'1299273618470567936', N'', N'', N'0'), (N'124', NULL, N'1299273770182737920', N'', N'', N'0'), (N'125', NULL, N'1299273978023084032', N'', N'', N'0'), (N'126', NULL, N'1299274123225694208', N'', N'', N'0'), (N'127', NULL, N'1299274222299348992', N'', N'', N'0'), (N'128', NULL, N'1304238876758495232', N'', N'', N'0'), (N'129', NULL, N'1304678610343383040', N'', N'', N'0'), (N'130', NULL, N'1304679169305694208', N'', N'', N'0'), (N'131', NULL, N'1310460417141817344', N'', N'', N'0'), (N'132', NULL, N'1310502391475519488', N'', N'', N'0'), (N'133', NULL, N'1310515546943569920', N'', N'', N'0'), (N'134', NULL, N'1310515735292985344', N'', N'', N'0'), (N'135', NULL, N'1316628769783480320', N'', N'', N'0'), (N'136', NULL, N'1316628940663619584', N'', N'', N'0'), (N'137', NULL, N'1316629112428756992', N'', N'', N'0'), (N'138', NULL, N'1316652047017246720', N'', N'', N'0'), (N'139', NULL, N'1316913899996737536', N'', N'', N'0'), (N'140', NULL, N'1319200951383199744', N'', N'', N'0') GO COMMIT @@ -180,7 +180,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewaycacheoptions] VALUES (N'3', N'1261299170387169280', NULL, NULL), (N'4', N'1261585859064872960', NULL, NULL), (N'5', N'1261586605810368512', NULL, NULL), (N'6', N'1261587558609436672', NULL, NULL), (N'7', N'1261588213298348032', NULL, NULL), (N'8', N'1261588367619375104', NULL, NULL), (N'9', N'1261588628450557952', NULL, NULL), (N'10', N'1261588881564221440', NULL, NULL), (N'11', N'1261588983053795328', NULL, NULL), (N'12', N'1261589139039961088', NULL, NULL), (N'13', N'1261589197483393024', NULL, NULL), (N'14', N'1261589278857084928', NULL, NULL), (N'15', N'1261589420356124672', NULL, NULL), (N'16', N'1261589960393736192', NULL, NULL), (N'17', N'1261606600242085888', NULL, NULL), (N'18', N'1261606689601732608', NULL, NULL), (N'21', N'1262220447629058048', NULL, NULL), (N'22', N'1262230734939758592', NULL, NULL), (N'23', N'1262296916350869504', NULL, NULL), (N'24', N'1262632376348594176', N'0', N''), (N'25', N'1262632791869902848', NULL, NULL), (N'26', N'1262632904575045632', NULL, NULL), (N'27', N'1262632976616411136', NULL, NULL), (N'28', N'1262660336921235456', N'0', N''), (N'29', N'1262660528277966848', N'0', N''), (N'30', N'1262660706875625472', N'0', N''), (N'31', N'1262660966393991168', N'0', N''), (N'32', N'1262661109474283520', N'0', N''), (N'33', N'1262663888804663296', N'0', N''), (N'34', N'1262664024096133120', N'0', N''), (N'35', N'1262664186252120064', N'0', N''), (N'36', N'1262664357044178944', N'0', N''), (N'37', N'1262664632928718848', N'0', N''), (N'38', N'1262664751409418240', N'0', N''), (N'39', N'1262664871274237952', N'0', N''), (N'40', N'1262665026111164416', N'0', N''), (N'41', N'1262665159905267712', N'0', N''), (N'42', N'1262665329829105664', N'0', N''), (N'43', N'1262665456471920640', N'0', N''), (N'44', N'1262665628165754880', NULL, NULL), (N'45', N'1262666172682883072', NULL, NULL), (N'47', N'1262723402331885568', N'0', N''), (N'48', N'1262935771746734080', N'0', N''), (N'49', N'1262935906522304512', N'0', N''), (N'50', N'1262936009924481024', N'0', N''), (N'52', N'1263074419073593344', NULL, NULL), (N'53', N'1263075249394790400', N'0', N''), (N'54', N'1263075593499684864', N'0', N''), (N'56', N'1263101898440146944', NULL, NULL), (N'57', N'1263303878648569856', NULL, NULL), (N'58', N'1263304204797648896', NULL, NULL), (N'59', N'1263304872891555840', NULL, NULL), (N'60', N'1263305106250047488', NULL, NULL), (N'61', N'1263305244594970624', NULL, NULL), (N'62', N'1263305430536855552', NULL, NULL), (N'63', N'1263639172959174656', NULL, NULL), (N'64', N'1264799968944640000', NULL, NULL), (N'65', N'1264800070161584128', NULL, NULL), (N'66', N'1267360794414161920', NULL, NULL), (N'67', N'1267383367629807616', NULL, NULL), (N'68', N'1267817055527632896', NULL, NULL), (N'69', N'1267817221286526976', NULL, NULL), (N'70', N'1268893687085518848', NULL, NULL), (N'94', N'1288657613998579712', NULL, NULL), (N'95', N'1288657941770854400', N'0', N''), (N'96', N'1288658134067109888', N'0', N''), (N'97', N'1288658305156964352', N'0', N''), (N'98', N'1288658491216289792', N'0', N''), (N'99', N'1288658638302142464', N'0', N''), (N'100', N'1288658791784308736', N'0', N''), (N'101', N'1290849478956199936', NULL, NULL), (N'102', N'1290849628051124224', NULL, NULL), (N'103', N'1290849798553776128', NULL, NULL), (N'105', N'1291259822512693248', N'0', N''), (N'106', N'1292620505149145088', N'0', N''), (N'107', N'1292620665505775616', N'0', N''), (N'108', N'1292620843398791168', NULL, NULL), (N'109', N'1292621027574874112', N'0', N''), (N'110', N'1292621363161137152', N'0', N''), (N'111', N'1292621494837116928', N'0', N''), (N'112', N'1292621629260365824', N'0', N''), (N'113', N'1292622526073864192', N'0', N''), (N'114', N'1293470838745821184', N'0', N''), (N'115', N'1293471661785706496', N'0', N''), (N'116', N'1293472678392721408', N'0', N''), (N'117', N'1293472857510473728', N'0', N''), (N'118', N'1299273336009359360', NULL, NULL), (N'119', N'1299273436282585088', NULL, NULL), (N'120', N'1299273618470567936', NULL, NULL), (N'121', N'1299273770182737920', NULL, NULL), (N'122', N'1299273978023084032', NULL, NULL), (N'123', N'1299274123225694208', NULL, NULL), (N'124', N'1299274222299348992', NULL, NULL), (N'125', N'1304238876758495232', N'0', N''), (N'126', N'1304678610343383040', NULL, NULL), (N'127', N'1304679169305694208', NULL, NULL), (N'128', N'1310460417141817344', N'0', N''), (N'129', N'1310502391475519488', N'0', N''), (N'130', N'1310515546943569920', NULL, NULL), (N'131', N'1310515735292985344', NULL, NULL), (N'132', N'1316628769783480320', N'0', N''), (N'133', N'1316628940663619584', N'0', N''), (N'134', N'1316629112428756992', N'0', N''), (N'135', N'1316652047017246720', N'0', N'') +INSERT INTO [apigateway].[appapigatewaycacheoptions] VALUES (N'3', N'1261299170387169280', NULL, NULL), (N'4', N'1261585859064872960', NULL, NULL), (N'5', N'1261586605810368512', NULL, NULL), (N'6', N'1261587558609436672', NULL, NULL), (N'7', N'1261588213298348032', NULL, NULL), (N'8', N'1261588367619375104', NULL, NULL), (N'9', N'1261588628450557952', NULL, NULL), (N'10', N'1261588881564221440', NULL, NULL), (N'11', N'1261588983053795328', NULL, NULL), (N'12', N'1261589139039961088', NULL, NULL), (N'13', N'1261589197483393024', NULL, NULL), (N'14', N'1261589278857084928', NULL, NULL), (N'15', N'1261589420356124672', NULL, NULL), (N'16', N'1261589960393736192', NULL, NULL), (N'17', N'1261606600242085888', NULL, NULL), (N'18', N'1261606689601732608', NULL, NULL), (N'21', N'1262220447629058048', NULL, NULL), (N'22', N'1262230734939758592', NULL, NULL), (N'23', N'1262296916350869504', NULL, NULL), (N'24', N'1262632376348594176', NULL, NULL), (N'25', N'1262632791869902848', NULL, NULL), (N'28', N'1262660336921235456', N'0', N''), (N'29', N'1262660528277966848', N'0', N''), (N'30', N'1262660706875625472', N'0', N''), (N'31', N'1262660966393991168', N'0', N''), (N'32', N'1262661109474283520', N'0', N''), (N'33', N'1262663888804663296', N'0', N''), (N'34', N'1262664024096133120', N'0', N''), (N'35', N'1262664186252120064', N'0', N''), (N'36', N'1262664357044178944', N'0', N''), (N'37', N'1262664632928718848', N'0', N''), (N'38', N'1262664751409418240', N'0', N''), (N'39', N'1262664871274237952', N'0', N''), (N'40', N'1262665026111164416', N'0', N''), (N'41', N'1262665159905267712', N'0', N''), (N'42', N'1262665329829105664', N'0', N''), (N'43', N'1262665456471920640', N'0', N''), (N'44', N'1262665628165754880', NULL, NULL), (N'45', N'1262666172682883072', NULL, NULL), (N'47', N'1262723402331885568', NULL, NULL), (N'48', N'1262935771746734080', NULL, NULL), (N'49', N'1262935906522304512', NULL, NULL), (N'52', N'1263074419073593344', NULL, NULL), (N'53', N'1263075249394790400', N'0', N''), (N'54', N'1263075593499684864', N'0', N''), (N'56', N'1263101898440146944', NULL, NULL), (N'57', N'1263303878648569856', NULL, NULL), (N'58', N'1263304204797648896', NULL, NULL), (N'59', N'1263304872891555840', NULL, NULL), (N'60', N'1263305106250047488', NULL, NULL), (N'61', N'1263305244594970624', NULL, NULL), (N'62', N'1263305430536855552', NULL, NULL), (N'63', N'1263639172959174656', NULL, NULL), (N'64', N'1264799968944640000', NULL, NULL), (N'65', N'1264800070161584128', NULL, NULL), (N'66', N'1267360794414161920', NULL, NULL), (N'67', N'1267383367629807616', NULL, NULL), (N'68', N'1267817055527632896', NULL, NULL), (N'69', N'1267817221286526976', NULL, NULL), (N'70', N'1268893687085518848', NULL, NULL), (N'94', N'1288657613998579712', NULL, NULL), (N'95', N'1288657941770854400', N'0', N''), (N'96', N'1288658134067109888', N'0', N''), (N'97', N'1288658305156964352', N'0', N''), (N'98', N'1288658491216289792', N'0', N''), (N'99', N'1288658638302142464', N'0', N''), (N'100', N'1288658791784308736', N'0', N''), (N'101', N'1290849478956199936', NULL, NULL), (N'102', N'1290849628051124224', NULL, NULL), (N'103', N'1290849798553776128', NULL, NULL), (N'105', N'1291259822512693248', N'0', N''), (N'106', N'1292620505149145088', N'0', N''), (N'107', N'1292620665505775616', N'0', N''), (N'108', N'1292620843398791168', NULL, NULL), (N'109', N'1292621027574874112', N'0', N''), (N'110', N'1292621363161137152', N'0', N''), (N'111', N'1292621494837116928', N'0', N''), (N'112', N'1292621629260365824', N'0', N''), (N'113', N'1292622526073864192', N'0', N''), (N'114', N'1293470838745821184', N'0', N''), (N'115', N'1293471661785706496', N'0', N''), (N'116', N'1293472678392721408', N'0', N''), (N'117', N'1293472857510473728', N'0', N''), (N'118', N'1299273336009359360', NULL, NULL), (N'119', N'1299273436282585088', NULL, NULL), (N'120', N'1299273618470567936', NULL, NULL), (N'121', N'1299273770182737920', NULL, NULL), (N'122', N'1299273978023084032', NULL, NULL), (N'123', N'1299274123225694208', NULL, NULL), (N'124', N'1299274222299348992', NULL, NULL), (N'125', N'1304238876758495232', N'0', N''), (N'126', N'1304678610343383040', NULL, NULL), (N'127', N'1304679169305694208', NULL, NULL), (N'128', N'1310460417141817344', N'0', N''), (N'129', N'1310502391475519488', N'0', N''), (N'130', N'1310515546943569920', NULL, NULL), (N'131', N'1310515735292985344', NULL, NULL), (N'132', N'1316628769783480320', N'0', N''), (N'133', N'1316628940663619584', N'0', N''), (N'134', N'1316629112428756992', N'0', N''), (N'135', N'1316652047017246720', N'0', N''), (N'136', N'1316913899996737536', N'0', N''), (N'137', N'1319200951383199744', N'0', N'') GO COMMIT @@ -335,7 +335,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewayhttpoptions] VALUES (N'1', N'1260841964962947072', NULL, NULL, N'0', N'0', N'1', N'0'), (N'4', NULL, N'1261299170387169280', N'1000', N'1', N'0', N'1', N'0'), (N'5', NULL, N'1261585859064872960', NULL, N'0', N'0', N'1', N'0'), (N'6', NULL, N'1261586605810368512', NULL, N'0', N'0', N'0', N'0'), (N'7', NULL, N'1261587558609436672', NULL, N'0', N'0', N'0', N'0'), (N'8', NULL, N'1261588213298348032', NULL, N'0', N'0', N'0', N'0'), (N'9', NULL, N'1261588367619375104', NULL, N'0', N'0', N'0', N'0'), (N'10', NULL, N'1261588628450557952', NULL, N'0', N'0', N'0', N'0'), (N'11', NULL, N'1261588881564221440', NULL, N'0', N'0', N'0', N'0'), (N'12', NULL, N'1261588983053795328', NULL, N'0', N'0', N'0', N'0'), (N'13', NULL, N'1261589139039961088', NULL, N'0', N'0', N'0', N'0'), (N'14', NULL, N'1261589197483393024', NULL, N'0', N'0', N'0', N'0'), (N'15', NULL, N'1261589278857084928', NULL, N'0', N'0', N'0', N'0'), (N'16', NULL, N'1261589420356124672', NULL, N'0', N'0', N'0', N'0'), (N'17', NULL, N'1261589960393736192', N'1000', N'1', N'0', N'1', N'0'), (N'18', NULL, N'1261606600242085888', NULL, N'0', N'0', N'0', N'0'), (N'19', NULL, N'1261606689601732608', NULL, N'0', N'0', N'0', N'0'), (N'22', NULL, N'1262220447629058048', NULL, N'0', N'0', N'1', N'0'), (N'23', NULL, N'1262230734939758592', NULL, N'0', N'0', N'1', N'0'), (N'24', NULL, N'1262296916350869504', NULL, N'0', N'0', N'1', N'0'), (N'25', NULL, N'1262632376348594176', N'0', N'0', N'0', N'0', N'0'), (N'26', NULL, N'1262632791869902848', N'0', N'0', N'0', N'0', N'0'), (N'27', NULL, N'1262632904575045632', N'0', N'0', N'0', N'0', N'0'), (N'28', NULL, N'1262632976616411136', N'0', N'0', N'0', N'0', N'0'), (N'29', NULL, N'1262660336921235456', N'0', N'0', N'0', N'0', N'0'), (N'30', NULL, N'1262660528277966848', N'0', N'0', N'0', N'0', N'0'), (N'31', NULL, N'1262660706875625472', N'0', N'0', N'0', N'0', N'0'), (N'32', NULL, N'1262660966393991168', N'0', N'0', N'0', N'0', N'0'), (N'33', NULL, N'1262661109474283520', N'0', N'0', N'0', N'0', N'0'), (N'34', NULL, N'1262663888804663296', N'0', N'0', N'0', N'0', N'0'), (N'35', NULL, N'1262664024096133120', N'0', N'0', N'0', N'0', N'0'), (N'36', NULL, N'1262664186252120064', N'0', N'0', N'0', N'0', N'0'), (N'37', NULL, N'1262664357044178944', N'0', N'0', N'0', N'0', N'0'), (N'38', NULL, N'1262664632928718848', N'0', N'0', N'0', N'0', N'0'), (N'39', NULL, N'1262664751409418240', N'0', N'0', N'0', N'0', N'0'), (N'40', NULL, N'1262664871274237952', N'0', N'0', N'0', N'0', N'0'), (N'41', NULL, N'1262665026111164416', N'0', N'0', N'0', N'0', N'0'), (N'42', NULL, N'1262665159905267712', N'0', N'0', N'0', N'0', N'0'), (N'43', NULL, N'1262665329829105664', N'0', N'0', N'0', N'0', N'0'), (N'44', NULL, N'1262665456471920640', N'0', N'0', N'0', N'0', N'0'), (N'45', NULL, N'1262665628165754880', N'0', N'0', N'0', N'0', N'0'), (N'46', NULL, N'1262666172682883072', N'0', N'0', N'0', N'0', N'0'), (N'48', NULL, N'1262723402331885568', N'0', N'0', N'0', N'0', N'0'), (N'49', NULL, N'1262935771746734080', N'0', N'0', N'0', N'0', N'0'), (N'50', NULL, N'1262935906522304512', N'0', N'0', N'0', N'0', N'0'), (N'51', NULL, N'1262936009924481024', N'0', N'0', N'0', N'0', N'0'), (N'53', NULL, N'1263074419073593344', N'0', N'0', N'0', N'0', N'0'), (N'54', NULL, N'1263075249394790400', N'0', N'0', N'0', N'0', N'0'), (N'55', NULL, N'1263075593499684864', N'0', N'0', N'0', N'0', N'0'), (N'57', NULL, N'1263101898440146944', N'0', N'0', N'0', N'0', N'0'), (N'58', NULL, N'1263303878648569856', N'0', N'0', N'0', N'0', N'0'), (N'59', NULL, N'1263304204797648896', N'0', N'0', N'0', N'0', N'0'), (N'60', NULL, N'1263304872891555840', N'0', N'0', N'0', N'0', N'0'), (N'61', NULL, N'1263305106250047488', N'0', N'0', N'0', N'0', N'0'), (N'62', NULL, N'1263305244594970624', N'0', N'0', N'0', N'0', N'0'), (N'63', NULL, N'1263305430536855552', N'0', N'0', N'0', N'0', N'0'), (N'64', NULL, N'1263639172959174656', N'0', N'0', N'0', N'0', N'0'), (N'65', NULL, N'1264799968944640000', N'0', N'0', N'0', N'0', N'0'), (N'66', NULL, N'1264800070161584128', N'0', N'0', N'0', N'0', N'0'), (N'68', NULL, N'1267360794414161920', N'0', N'0', N'0', N'0', N'0'), (N'69', NULL, N'1267383367629807616', N'0', N'0', N'0', N'0', N'0'), (N'70', NULL, N'1267817055527632896', N'0', N'0', N'0', N'0', N'0'), (N'71', NULL, N'1267817221286526976', N'0', N'0', N'0', N'0', N'0'), (N'72', NULL, N'1268893687085518848', N'0', N'0', N'0', N'0', N'0'), (N'97', NULL, N'1288657613998579712', N'1000', N'0', N'0', N'0', N'0'), (N'98', NULL, N'1288657941770854400', N'1000', N'0', N'0', N'0', N'0'), (N'99', NULL, N'1288658134067109888', N'1000', N'0', N'0', N'0', N'0'), (N'100', NULL, N'1288658305156964352', N'1000', N'0', N'0', N'0', N'0'), (N'101', NULL, N'1288658491216289792', N'1000', N'0', N'0', N'0', N'0'), (N'102', NULL, N'1288658638302142464', N'1000', N'0', N'0', N'0', N'0'), (N'103', NULL, N'1288658791784308736', N'1000', N'0', N'0', N'0', N'0'), (N'104', NULL, N'1290849478956199936', N'0', N'0', N'0', N'0', N'0'), (N'105', NULL, N'1290849628051124224', N'0', N'0', N'0', N'0', N'0'), (N'106', NULL, N'1290849798553776128', N'0', N'0', N'0', N'0', N'0'), (N'108', NULL, N'1291259822512693248', N'0', N'0', N'0', N'0', N'0'), (N'109', NULL, N'1292620505149145088', N'0', N'0', N'0', N'0', N'0'), (N'110', NULL, N'1292620665505775616', N'0', N'0', N'0', N'0', N'0'), (N'111', NULL, N'1292620843398791168', N'100', N'0', N'0', N'0', N'0'), (N'112', NULL, N'1292621027574874112', N'0', N'0', N'0', N'0', N'0'), (N'113', NULL, N'1292621363161137152', N'0', N'0', N'0', N'0', N'0'), (N'114', NULL, N'1292621494837116928', N'0', N'0', N'0', N'0', N'0'), (N'115', NULL, N'1292621629260365824', N'0', N'0', N'0', N'0', N'0'), (N'116', NULL, N'1292622526073864192', N'0', N'0', N'0', N'0', N'0'), (N'117', NULL, N'1293470838745821184', N'0', N'0', N'0', N'0', N'0'), (N'118', NULL, N'1293471661785706496', N'0', N'0', N'0', N'0', N'0'), (N'119', NULL, N'1293472678392721408', N'0', N'0', N'0', N'0', N'0'), (N'120', NULL, N'1293472857510473728', N'0', N'0', N'0', N'0', N'0'), (N'121', NULL, N'1299273336009359360', N'0', N'0', N'0', N'0', N'0'), (N'122', NULL, N'1299273436282585088', N'0', N'0', N'0', N'0', N'0'), (N'123', NULL, N'1299273618470567936', N'0', N'0', N'0', N'0', N'0'), (N'124', NULL, N'1299273770182737920', N'0', N'0', N'0', N'0', N'0'), (N'125', NULL, N'1299273978023084032', N'0', N'0', N'0', N'0', N'0'), (N'126', NULL, N'1299274123225694208', N'0', N'0', N'0', N'0', N'0'), (N'127', NULL, N'1299274222299348992', N'0', N'0', N'0', N'0', N'0'), (N'128', NULL, N'1304238876758495232', N'0', N'0', N'0', N'0', N'0'), (N'129', NULL, N'1304678610343383040', N'0', N'0', N'0', N'0', N'0'), (N'130', NULL, N'1304679169305694208', N'0', N'0', N'0', N'0', N'0'), (N'131', NULL, N'1310460417141817344', N'0', N'0', N'0', N'0', N'0'), (N'132', NULL, N'1310502391475519488', N'0', N'0', N'0', N'0', N'0'), (N'133', NULL, N'1310515546943569920', N'0', N'0', N'0', N'0', N'0'), (N'134', NULL, N'1310515735292985344', N'0', N'0', N'0', N'0', N'0'), (N'135', NULL, N'1316628769783480320', N'0', N'0', N'0', N'0', N'0'), (N'136', NULL, N'1316628940663619584', N'0', N'0', N'0', N'0', N'0'), (N'137', NULL, N'1316629112428756992', N'0', N'0', N'0', N'0', N'0'), (N'138', NULL, N'1316652047017246720', N'0', N'0', N'0', N'0', N'0') +INSERT INTO [apigateway].[appapigatewayhttpoptions] VALUES (N'1', N'1260841964962947072', NULL, NULL, N'0', N'0', N'1', N'0'), (N'4', NULL, N'1261299170387169280', N'1000', N'1', N'0', N'1', N'0'), (N'5', NULL, N'1261585859064872960', NULL, N'0', N'0', N'1', N'0'), (N'6', NULL, N'1261586605810368512', NULL, N'0', N'0', N'0', N'0'), (N'7', NULL, N'1261587558609436672', NULL, N'0', N'0', N'0', N'0'), (N'8', NULL, N'1261588213298348032', NULL, N'0', N'0', N'0', N'0'), (N'9', NULL, N'1261588367619375104', NULL, N'0', N'0', N'0', N'0'), (N'10', NULL, N'1261588628450557952', NULL, N'0', N'0', N'0', N'0'), (N'11', NULL, N'1261588881564221440', NULL, N'0', N'0', N'0', N'0'), (N'12', NULL, N'1261588983053795328', NULL, N'0', N'0', N'0', N'0'), (N'13', NULL, N'1261589139039961088', NULL, N'0', N'0', N'0', N'0'), (N'14', NULL, N'1261589197483393024', NULL, N'0', N'0', N'0', N'0'), (N'15', NULL, N'1261589278857084928', NULL, N'0', N'0', N'0', N'0'), (N'16', NULL, N'1261589420356124672', NULL, N'0', N'0', N'0', N'0'), (N'17', NULL, N'1261589960393736192', N'1000', N'1', N'0', N'1', N'0'), (N'18', NULL, N'1261606600242085888', NULL, N'0', N'0', N'0', N'0'), (N'19', NULL, N'1261606689601732608', NULL, N'0', N'0', N'0', N'0'), (N'22', NULL, N'1262220447629058048', NULL, N'0', N'0', N'1', N'0'), (N'23', NULL, N'1262230734939758592', NULL, N'0', N'0', N'1', N'0'), (N'24', NULL, N'1262296916350869504', NULL, N'0', N'0', N'1', N'0'), (N'25', NULL, N'1262632376348594176', N'0', N'0', N'0', N'0', N'0'), (N'26', NULL, N'1262632791869902848', N'0', N'0', N'0', N'0', N'0'), (N'29', NULL, N'1262660336921235456', N'0', N'0', N'0', N'0', N'0'), (N'30', NULL, N'1262660528277966848', N'0', N'0', N'0', N'0', N'0'), (N'31', NULL, N'1262660706875625472', N'0', N'0', N'0', N'0', N'0'), (N'32', NULL, N'1262660966393991168', N'0', N'0', N'0', N'0', N'0'), (N'33', NULL, N'1262661109474283520', N'0', N'0', N'0', N'0', N'0'), (N'34', NULL, N'1262663888804663296', N'0', N'0', N'0', N'0', N'0'), (N'35', NULL, N'1262664024096133120', N'0', N'0', N'0', N'0', N'0'), (N'36', NULL, N'1262664186252120064', N'0', N'0', N'0', N'0', N'0'), (N'37', NULL, N'1262664357044178944', N'0', N'0', N'0', N'0', N'0'), (N'38', NULL, N'1262664632928718848', N'0', N'0', N'0', N'0', N'0'), (N'39', NULL, N'1262664751409418240', N'0', N'0', N'0', N'0', N'0'), (N'40', NULL, N'1262664871274237952', N'0', N'0', N'0', N'0', N'0'), (N'41', NULL, N'1262665026111164416', N'0', N'0', N'0', N'0', N'0'), (N'42', NULL, N'1262665159905267712', N'0', N'0', N'0', N'0', N'0'), (N'43', NULL, N'1262665329829105664', N'0', N'0', N'0', N'0', N'0'), (N'44', NULL, N'1262665456471920640', N'0', N'0', N'0', N'0', N'0'), (N'45', NULL, N'1262665628165754880', N'0', N'0', N'0', N'0', N'0'), (N'46', NULL, N'1262666172682883072', N'0', N'0', N'0', N'0', N'0'), (N'48', NULL, N'1262723402331885568', N'0', N'0', N'0', N'0', N'0'), (N'49', NULL, N'1262935771746734080', N'0', N'0', N'0', N'0', N'0'), (N'50', NULL, N'1262935906522304512', N'0', N'0', N'0', N'0', N'0'), (N'53', NULL, N'1263074419073593344', N'0', N'0', N'0', N'0', N'0'), (N'54', NULL, N'1263075249394790400', N'0', N'0', N'0', N'0', N'0'), (N'55', NULL, N'1263075593499684864', N'0', N'0', N'0', N'0', N'0'), (N'57', NULL, N'1263101898440146944', N'0', N'0', N'0', N'0', N'0'), (N'58', NULL, N'1263303878648569856', N'0', N'0', N'0', N'0', N'0'), (N'59', NULL, N'1263304204797648896', N'0', N'0', N'0', N'0', N'0'), (N'60', NULL, N'1263304872891555840', N'0', N'0', N'0', N'0', N'0'), (N'61', NULL, N'1263305106250047488', N'0', N'0', N'0', N'0', N'0'), (N'62', NULL, N'1263305244594970624', N'0', N'0', N'0', N'0', N'0'), (N'63', NULL, N'1263305430536855552', N'0', N'0', N'0', N'0', N'0'), (N'64', NULL, N'1263639172959174656', N'0', N'0', N'0', N'0', N'0'), (N'65', NULL, N'1264799968944640000', N'0', N'0', N'0', N'0', N'0'), (N'66', NULL, N'1264800070161584128', N'0', N'0', N'0', N'0', N'0'), (N'68', NULL, N'1267360794414161920', N'0', N'0', N'0', N'0', N'0'), (N'69', NULL, N'1267383367629807616', N'0', N'0', N'0', N'0', N'0'), (N'70', NULL, N'1267817055527632896', N'0', N'0', N'0', N'0', N'0'), (N'71', NULL, N'1267817221286526976', N'0', N'0', N'0', N'0', N'0'), (N'72', NULL, N'1268893687085518848', N'0', N'0', N'0', N'0', N'0'), (N'97', NULL, N'1288657613998579712', N'1000', N'0', N'0', N'0', N'0'), (N'98', NULL, N'1288657941770854400', N'1000', N'0', N'0', N'0', N'0'), (N'99', NULL, N'1288658134067109888', N'1000', N'0', N'0', N'0', N'0'), (N'100', NULL, N'1288658305156964352', N'1000', N'0', N'0', N'0', N'0'), (N'101', NULL, N'1288658491216289792', N'1000', N'0', N'0', N'0', N'0'), (N'102', NULL, N'1288658638302142464', N'1000', N'0', N'0', N'0', N'0'), (N'103', NULL, N'1288658791784308736', N'1000', N'0', N'0', N'0', N'0'), (N'104', NULL, N'1290849478956199936', N'0', N'0', N'0', N'0', N'0'), (N'105', NULL, N'1290849628051124224', N'0', N'0', N'0', N'0', N'0'), (N'106', NULL, N'1290849798553776128', N'0', N'0', N'0', N'0', N'0'), (N'108', NULL, N'1291259822512693248', N'0', N'0', N'0', N'0', N'0'), (N'109', NULL, N'1292620505149145088', N'0', N'0', N'0', N'0', N'0'), (N'110', NULL, N'1292620665505775616', N'0', N'0', N'0', N'0', N'0'), (N'111', NULL, N'1292620843398791168', N'100', N'0', N'0', N'0', N'0'), (N'112', NULL, N'1292621027574874112', N'0', N'0', N'0', N'0', N'0'), (N'113', NULL, N'1292621363161137152', N'0', N'0', N'0', N'0', N'0'), (N'114', NULL, N'1292621494837116928', N'0', N'0', N'0', N'0', N'0'), (N'115', NULL, N'1292621629260365824', N'0', N'0', N'0', N'0', N'0'), (N'116', NULL, N'1292622526073864192', N'0', N'0', N'0', N'0', N'0'), (N'117', NULL, N'1293470838745821184', N'0', N'0', N'0', N'0', N'0'), (N'118', NULL, N'1293471661785706496', N'0', N'0', N'0', N'0', N'0'), (N'119', NULL, N'1293472678392721408', N'0', N'0', N'0', N'0', N'0'), (N'120', NULL, N'1293472857510473728', N'0', N'0', N'0', N'0', N'0'), (N'121', NULL, N'1299273336009359360', N'0', N'0', N'0', N'0', N'0'), (N'122', NULL, N'1299273436282585088', N'0', N'0', N'0', N'0', N'0'), (N'123', NULL, N'1299273618470567936', N'0', N'0', N'0', N'0', N'0'), (N'124', NULL, N'1299273770182737920', N'0', N'0', N'0', N'0', N'0'), (N'125', NULL, N'1299273978023084032', N'0', N'0', N'0', N'0', N'0'), (N'126', NULL, N'1299274123225694208', N'0', N'0', N'0', N'0', N'0'), (N'127', NULL, N'1299274222299348992', N'0', N'0', N'0', N'0', N'0'), (N'128', NULL, N'1304238876758495232', N'0', N'0', N'0', N'0', N'0'), (N'129', NULL, N'1304678610343383040', N'0', N'0', N'0', N'0', N'0'), (N'130', NULL, N'1304679169305694208', N'0', N'0', N'0', N'0', N'0'), (N'131', NULL, N'1310460417141817344', N'0', N'0', N'0', N'0', N'0'), (N'132', NULL, N'1310502391475519488', N'0', N'0', N'0', N'0', N'0'), (N'133', NULL, N'1310515546943569920', N'0', N'0', N'0', N'0', N'0'), (N'134', NULL, N'1310515735292985344', N'0', N'0', N'0', N'0', N'0'), (N'135', NULL, N'1316628769783480320', N'0', N'0', N'0', N'0', N'0'), (N'136', NULL, N'1316628940663619584', N'0', N'0', N'0', N'0', N'0'), (N'137', NULL, N'1316629112428756992', N'0', N'0', N'0', N'0', N'0'), (N'138', NULL, N'1316652047017246720', N'0', N'0', N'0', N'0', N'0'), (N'139', NULL, N'1316913899996737536', N'0', N'0', N'0', N'0', N'0'), (N'140', NULL, N'1319200951383199744', N'0', N'0', N'0', N'0', N'0') GO COMMIT @@ -366,7 +366,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewayqosoptions] VALUES (N'1', N'1260841964962947072', NULL, N'60', N'60000', N'30000'), (N'4', NULL, N'1261299170387169280', N'60', N'60000', N'30000'), (N'5', NULL, N'1261585859064872960', N'60', N'60000', N'30000'), (N'6', NULL, N'1261586605810368512', N'60', N'60000', N'30000'), (N'7', NULL, N'1261587558609436672', N'60', N'60000', N'30000'), (N'8', NULL, N'1261588213298348032', N'60', N'60000', N'30000'), (N'9', NULL, N'1261588367619375104', N'60', N'60000', N'30000'), (N'10', NULL, N'1261588628450557952', N'60', N'60000', N'30000'), (N'11', NULL, N'1261588881564221440', N'60', N'60000', N'30000'), (N'12', NULL, N'1261588983053795328', N'60', N'60000', N'30000'), (N'13', NULL, N'1261589139039961088', N'60', N'60000', N'30000'), (N'14', NULL, N'1261589197483393024', N'60', N'60000', N'30000'), (N'15', NULL, N'1261589278857084928', N'60', N'60000', N'30000'), (N'16', NULL, N'1261589420356124672', N'60', N'60000', N'30000'), (N'17', NULL, N'1261589960393736192', N'60', N'60000', N'30000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', N'60', N'60000', N'30000'), (N'23', NULL, N'1262230734939758592', N'60', N'60000', N'30000'), (N'24', NULL, N'1262296916350869504', N'60', N'60000', N'30000'), (N'25', NULL, N'1262632376348594176', N'50', N'60000', N'30000'), (N'26', NULL, N'1262632791869902848', N'50', N'60000', N'30000'), (N'27', NULL, N'1262632904575045632', N'50', N'60000', N'30000'), (N'28', NULL, N'1262632976616411136', N'50', N'60000', N'30000'), (N'29', NULL, N'1262660336921235456', N'50', N'60000', N'30000'), (N'30', NULL, N'1262660528277966848', N'50', N'60000', N'30000'), (N'31', NULL, N'1262660706875625472', N'50', N'60000', N'30000'), (N'32', NULL, N'1262660966393991168', N'50', N'60000', N'30000'), (N'33', NULL, N'1262661109474283520', N'50', N'60000', N'30000'), (N'34', NULL, N'1262663888804663296', N'50', N'60000', N'30000'), (N'35', NULL, N'1262664024096133120', N'50', N'60000', N'30000'), (N'36', NULL, N'1262664186252120064', N'50', N'60000', N'30000'), (N'37', NULL, N'1262664357044178944', N'50', N'60000', N'30000'), (N'38', NULL, N'1262664632928718848', N'50', N'60000', N'30000'), (N'39', NULL, N'1262664751409418240', N'50', N'60000', N'30000'), (N'40', NULL, N'1262664871274237952', N'50', N'60000', N'30000'), (N'41', NULL, N'1262665026111164416', N'50', N'60000', N'30000'), (N'42', NULL, N'1262665159905267712', N'50', N'60000', N'30000'), (N'43', NULL, N'1262665329829105664', N'50', N'60000', N'30000'), (N'44', NULL, N'1262665456471920640', N'50', N'60000', N'30000'), (N'45', NULL, N'1262665628165754880', N'50', N'60000', N'30000'), (N'46', NULL, N'1262666172682883072', N'50', N'60000', N'30000'), (N'48', NULL, N'1262723402331885568', N'50', N'60000', N'30000'), (N'49', NULL, N'1262935771746734080', N'50', N'60000', N'30000'), (N'50', NULL, N'1262935906522304512', N'50', N'60000', N'30000'), (N'51', NULL, N'1262936009924481024', N'50', N'60000', N'30000'), (N'53', NULL, N'1263074419073593344', N'50', N'60000', N'30000'), (N'54', NULL, N'1263075249394790400', N'50', N'60000', N'30000'), (N'55', NULL, N'1263075593499684864', N'50', N'60000', N'30000'), (N'57', NULL, N'1263101898440146944', N'50', N'60000', N'120000'), (N'58', NULL, N'1263303878648569856', N'50', N'60000', N'30000'), (N'59', NULL, N'1263304204797648896', N'50', N'60000', N'120000'), (N'60', NULL, N'1263304872891555840', N'50', N'60000', N'30000'), (N'61', NULL, N'1263305106250047488', N'50', N'60000', N'30000'), (N'62', NULL, N'1263305244594970624', N'50', N'60000', N'30000'), (N'63', NULL, N'1263305430536855552', N'50', N'60000', N'30000'), (N'64', NULL, N'1263639172959174656', N'50', N'60000', N'30000'), (N'65', NULL, N'1264799968944640000', N'50', N'60000', N'30000'), (N'66', NULL, N'1264800070161584128', N'50', N'60000', N'30000'), (N'68', NULL, N'1267360794414161920', N'50', N'60000', N'30000'), (N'69', NULL, N'1267383367629807616', N'50', N'60000', N'30000'), (N'70', NULL, N'1267817055527632896', N'50', N'60000', N'30000'), (N'71', NULL, N'1267817221286526976', N'50', N'60000', N'30000'), (N'72', NULL, N'1268893687085518848', N'50', N'60000', N'30000'), (N'97', NULL, N'1288657613998579712', N'50', N'60000', N'30000'), (N'98', NULL, N'1288657941770854400', N'50', N'60000', N'30000'), (N'99', NULL, N'1288658134067109888', N'50', N'60000', N'30000'), (N'100', NULL, N'1288658305156964352', N'50', N'60000', N'30000'), (N'101', NULL, N'1288658491216289792', N'50', N'60000', N'30000'), (N'102', NULL, N'1288658638302142464', N'50', N'60000', N'30000'), (N'103', NULL, N'1288658791784308736', N'50', N'60000', N'30000'), (N'104', NULL, N'1290849478956199936', N'50', N'60000', N'30000'), (N'105', NULL, N'1290849628051124224', N'50', N'60000', N'30000'), (N'106', NULL, N'1290849798553776128', N'50', N'60000', N'30000'), (N'108', NULL, N'1291259822512693248', N'50', N'60000', N'30000'), (N'109', NULL, N'1292620505149145088', N'50', N'60000', N'30000'), (N'110', NULL, N'1292620665505775616', N'50', N'60000', N'30000'), (N'111', NULL, N'1292620843398791168', N'50', N'60000', N'1200000'), (N'112', NULL, N'1292621027574874112', N'50', N'60000', N'30000'), (N'113', NULL, N'1292621363161137152', N'50', N'60000', N'30000'), (N'114', NULL, N'1292621494837116928', N'50', N'60000', N'30000'), (N'115', NULL, N'1292621629260365824', N'50', N'60000', N'30000'), (N'116', NULL, N'1292622526073864192', N'50', N'60000', N'30000'), (N'117', NULL, N'1293470838745821184', N'50', N'60000', N'30000'), (N'118', NULL, N'1293471661785706496', N'50', N'60000', N'30000'), (N'119', NULL, N'1293472678392721408', N'50', N'60000', N'30000'), (N'120', NULL, N'1293472857510473728', N'50', N'60000', N'30000'), (N'121', NULL, N'1299273336009359360', N'50', N'60000', N'30000'), (N'122', NULL, N'1299273436282585088', N'50', N'60000', N'30000'), (N'123', NULL, N'1299273618470567936', N'50', N'60000', N'30000'), (N'124', NULL, N'1299273770182737920', N'50', N'60000', N'30000'), (N'125', NULL, N'1299273978023084032', N'50', N'60000', N'30000'), (N'126', NULL, N'1299274123225694208', N'50', N'60000', N'30000'), (N'127', NULL, N'1299274222299348992', N'50', N'60000', N'30000'), (N'128', NULL, N'1304238876758495232', N'50', N'60000', N'30000'), (N'129', NULL, N'1304678610343383040', N'50', N'60000', N'30000'), (N'130', NULL, N'1304679169305694208', N'50', N'60000', N'30000'), (N'131', NULL, N'1310460417141817344', N'50', N'60000', N'30000'), (N'132', NULL, N'1310502391475519488', N'50', N'60000', N'30000'), (N'133', NULL, N'1310515546943569920', N'50', N'60000', N'30000'), (N'134', NULL, N'1310515735292985344', N'50', N'60000', N'30000'), (N'135', NULL, N'1316628769783480320', N'50', N'60000', N'30000'), (N'136', NULL, N'1316628940663619584', N'50', N'60000', N'30000'), (N'137', NULL, N'1316629112428756992', N'50', N'60000', N'30000'), (N'138', NULL, N'1316652047017246720', N'50', N'60000', N'30000') +INSERT INTO [apigateway].[appapigatewayqosoptions] VALUES (N'1', N'1260841964962947072', NULL, N'60', N'60000', N'30000'), (N'4', NULL, N'1261299170387169280', N'60', N'60000', N'30000'), (N'5', NULL, N'1261585859064872960', N'60', N'60000', N'30000'), (N'6', NULL, N'1261586605810368512', N'60', N'60000', N'30000'), (N'7', NULL, N'1261587558609436672', N'60', N'60000', N'30000'), (N'8', NULL, N'1261588213298348032', N'60', N'60000', N'30000'), (N'9', NULL, N'1261588367619375104', N'60', N'60000', N'30000'), (N'10', NULL, N'1261588628450557952', N'60', N'60000', N'30000'), (N'11', NULL, N'1261588881564221440', N'60', N'60000', N'30000'), (N'12', NULL, N'1261588983053795328', N'60', N'60000', N'30000'), (N'13', NULL, N'1261589139039961088', N'60', N'60000', N'30000'), (N'14', NULL, N'1261589197483393024', N'60', N'60000', N'30000'), (N'15', NULL, N'1261589278857084928', N'60', N'60000', N'30000'), (N'16', NULL, N'1261589420356124672', N'60', N'60000', N'30000'), (N'17', NULL, N'1261589960393736192', N'60', N'60000', N'30000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', N'60', N'60000', N'30000'), (N'23', NULL, N'1262230734939758592', N'60', N'60000', N'30000'), (N'24', NULL, N'1262296916350869504', N'60', N'60000', N'30000'), (N'25', NULL, N'1262632376348594176', N'50', N'60000', N'30000'), (N'26', NULL, N'1262632791869902848', N'50', N'60000', N'30000'), (N'29', NULL, N'1262660336921235456', N'50', N'60000', N'30000'), (N'30', NULL, N'1262660528277966848', N'50', N'60000', N'30000'), (N'31', NULL, N'1262660706875625472', N'50', N'60000', N'30000'), (N'32', NULL, N'1262660966393991168', N'50', N'60000', N'30000'), (N'33', NULL, N'1262661109474283520', N'50', N'60000', N'30000'), (N'34', NULL, N'1262663888804663296', N'50', N'60000', N'30000'), (N'35', NULL, N'1262664024096133120', N'50', N'60000', N'30000'), (N'36', NULL, N'1262664186252120064', N'50', N'60000', N'30000'), (N'37', NULL, N'1262664357044178944', N'50', N'60000', N'30000'), (N'38', NULL, N'1262664632928718848', N'50', N'60000', N'30000'), (N'39', NULL, N'1262664751409418240', N'50', N'60000', N'30000'), (N'40', NULL, N'1262664871274237952', N'50', N'60000', N'30000'), (N'41', NULL, N'1262665026111164416', N'50', N'60000', N'30000'), (N'42', NULL, N'1262665159905267712', N'50', N'60000', N'30000'), (N'43', NULL, N'1262665329829105664', N'50', N'60000', N'30000'), (N'44', NULL, N'1262665456471920640', N'50', N'60000', N'30000'), (N'45', NULL, N'1262665628165754880', N'50', N'60000', N'30000'), (N'46', NULL, N'1262666172682883072', N'50', N'60000', N'30000'), (N'48', NULL, N'1262723402331885568', N'50', N'60000', N'30000'), (N'49', NULL, N'1262935771746734080', N'50', N'60000', N'30000'), (N'50', NULL, N'1262935906522304512', N'50', N'60000', N'30000'), (N'53', NULL, N'1263074419073593344', N'50', N'60000', N'30000'), (N'54', NULL, N'1263075249394790400', N'50', N'60000', N'30000'), (N'55', NULL, N'1263075593499684864', N'50', N'60000', N'30000'), (N'57', NULL, N'1263101898440146944', N'50', N'60000', N'120000'), (N'58', NULL, N'1263303878648569856', N'50', N'60000', N'30000'), (N'59', NULL, N'1263304204797648896', N'50', N'60000', N'120000'), (N'60', NULL, N'1263304872891555840', N'50', N'60000', N'30000'), (N'61', NULL, N'1263305106250047488', N'50', N'60000', N'30000'), (N'62', NULL, N'1263305244594970624', N'50', N'60000', N'30000'), (N'63', NULL, N'1263305430536855552', N'50', N'60000', N'30000'), (N'64', NULL, N'1263639172959174656', N'50', N'60000', N'30000'), (N'65', NULL, N'1264799968944640000', N'50', N'60000', N'30000'), (N'66', NULL, N'1264800070161584128', N'50', N'60000', N'30000'), (N'68', NULL, N'1267360794414161920', N'50', N'60000', N'30000'), (N'69', NULL, N'1267383367629807616', N'50', N'60000', N'30000'), (N'70', NULL, N'1267817055527632896', N'50', N'60000', N'30000'), (N'71', NULL, N'1267817221286526976', N'50', N'60000', N'30000'), (N'72', NULL, N'1268893687085518848', N'50', N'60000', N'30000'), (N'97', NULL, N'1288657613998579712', N'50', N'60000', N'30000'), (N'98', NULL, N'1288657941770854400', N'50', N'60000', N'30000'), (N'99', NULL, N'1288658134067109888', N'50', N'60000', N'30000'), (N'100', NULL, N'1288658305156964352', N'50', N'60000', N'30000'), (N'101', NULL, N'1288658491216289792', N'50', N'60000', N'30000'), (N'102', NULL, N'1288658638302142464', N'50', N'60000', N'30000'), (N'103', NULL, N'1288658791784308736', N'50', N'60000', N'30000'), (N'104', NULL, N'1290849478956199936', N'50', N'60000', N'30000'), (N'105', NULL, N'1290849628051124224', N'50', N'60000', N'30000'), (N'106', NULL, N'1290849798553776128', N'50', N'60000', N'30000'), (N'108', NULL, N'1291259822512693248', N'50', N'60000', N'30000'), (N'109', NULL, N'1292620505149145088', N'50', N'60000', N'30000'), (N'110', NULL, N'1292620665505775616', N'50', N'60000', N'30000'), (N'111', NULL, N'1292620843398791168', N'50', N'60000', N'1200000'), (N'112', NULL, N'1292621027574874112', N'50', N'60000', N'30000'), (N'113', NULL, N'1292621363161137152', N'50', N'60000', N'30000'), (N'114', NULL, N'1292621494837116928', N'50', N'60000', N'30000'), (N'115', NULL, N'1292621629260365824', N'50', N'60000', N'30000'), (N'116', NULL, N'1292622526073864192', N'50', N'60000', N'30000'), (N'117', NULL, N'1293470838745821184', N'50', N'60000', N'30000'), (N'118', NULL, N'1293471661785706496', N'50', N'60000', N'30000'), (N'119', NULL, N'1293472678392721408', N'50', N'60000', N'30000'), (N'120', NULL, N'1293472857510473728', N'50', N'60000', N'30000'), (N'121', NULL, N'1299273336009359360', N'50', N'60000', N'30000'), (N'122', NULL, N'1299273436282585088', N'50', N'60000', N'30000'), (N'123', NULL, N'1299273618470567936', N'50', N'60000', N'30000'), (N'124', NULL, N'1299273770182737920', N'50', N'60000', N'30000'), (N'125', NULL, N'1299273978023084032', N'50', N'60000', N'30000'), (N'126', NULL, N'1299274123225694208', N'50', N'60000', N'30000'), (N'127', NULL, N'1299274222299348992', N'50', N'60000', N'30000'), (N'128', NULL, N'1304238876758495232', N'50', N'60000', N'30000'), (N'129', NULL, N'1304678610343383040', N'50', N'60000', N'30000'), (N'130', NULL, N'1304679169305694208', N'50', N'60000', N'30000'), (N'131', NULL, N'1310460417141817344', N'50', N'60000', N'30000'), (N'132', NULL, N'1310502391475519488', N'50', N'60000', N'30000'), (N'133', NULL, N'1310515546943569920', N'50', N'60000', N'30000'), (N'134', NULL, N'1310515735292985344', N'50', N'60000', N'30000'), (N'135', NULL, N'1316628769783480320', N'50', N'60000', N'30000'), (N'136', NULL, N'1316628940663619584', N'50', N'60000', N'30000'), (N'137', NULL, N'1316629112428756992', N'50', N'60000', N'30000'), (N'138', NULL, N'1316652047017246720', N'50', N'60000', N'30000'), (N'139', NULL, N'1316913899996737536', N'50', N'60000', N'30000'), (N'140', NULL, N'1319200951383199744', N'50', N'60000', N'30000') GO COMMIT @@ -431,7 +431,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewayratelimitrule] VALUES (N'3', N'1261299170387169280', NULL, N'', N'0', NULL, NULL, NULL), (N'4', N'1261585859064872960', NULL, N'', N'0', NULL, NULL, NULL), (N'5', N'1261586605810368512', NULL, N'', N'0', NULL, NULL, NULL), (N'6', N'1261587558609436672', NULL, N'', N'0', NULL, NULL, NULL), (N'7', N'1261588213298348032', NULL, N'', N'0', NULL, NULL, NULL), (N'8', N'1261588367619375104', NULL, N'', N'0', NULL, NULL, NULL), (N'9', N'1261588628450557952', NULL, N'', N'0', NULL, NULL, NULL), (N'10', N'1261588881564221440', NULL, N'', N'0', NULL, NULL, NULL), (N'11', N'1261588983053795328', NULL, N'', N'0', NULL, NULL, NULL), (N'12', N'1261589139039961088', NULL, N'', N'0', NULL, NULL, NULL), (N'13', N'1261589197483393024', NULL, N'', N'0', NULL, NULL, NULL), (N'14', N'1261589278857084928', NULL, N'', N'0', NULL, NULL, NULL), (N'15', N'1261589420356124672', NULL, N'', N'0', NULL, NULL, NULL), (N'16', N'1261589960393736192', NULL, N'', N'0', NULL, NULL, NULL), (N'17', N'1261606600242085888', NULL, N'', N'0', NULL, NULL, NULL), (N'18', N'1261606689601732608', NULL, N'', N'0', NULL, NULL, NULL), (N'21', N'1262220447629058048', NULL, N'', N'0', NULL, NULL, NULL), (N'22', N'1262230734939758592', NULL, N'', N'0', NULL, NULL, NULL), (N'23', N'1262296916350869504', NULL, N'', N'0', NULL, NULL, NULL), (N'24', N'1262632376348594176', NULL, N'', N'0', NULL, NULL, NULL), (N'25', N'1262632791869902848', NULL, N'', N'0', NULL, NULL, NULL), (N'26', N'1262632904575045632', NULL, N'', N'0', NULL, NULL, NULL), (N'27', N'1262632976616411136', NULL, N'', N'0', NULL, NULL, NULL), (N'28', N'1262660336921235456', NULL, N'', N'0', NULL, NULL, NULL), (N'29', N'1262660528277966848', NULL, N'', N'0', NULL, NULL, NULL), (N'30', N'1262660706875625472', NULL, N'', N'0', NULL, NULL, NULL), (N'31', N'1262660966393991168', NULL, N'', N'0', NULL, NULL, NULL), (N'32', N'1262661109474283520', NULL, N'', N'0', NULL, NULL, NULL), (N'33', N'1262663888804663296', NULL, N'', N'0', NULL, NULL, NULL), (N'34', N'1262664024096133120', NULL, N'', N'0', NULL, NULL, NULL), (N'35', N'1262664186252120064', NULL, N'', N'0', NULL, NULL, NULL), (N'36', N'1262664357044178944', NULL, N'', N'0', NULL, NULL, NULL), (N'37', N'1262664632928718848', NULL, N'', N'0', NULL, NULL, NULL), (N'38', N'1262664751409418240', NULL, N'', N'0', NULL, NULL, NULL), (N'39', N'1262664871274237952', NULL, N'', N'0', NULL, NULL, NULL), (N'40', N'1262665026111164416', NULL, N'', N'0', NULL, NULL, NULL), (N'41', N'1262665159905267712', NULL, N'', N'0', NULL, NULL, NULL), (N'42', N'1262665329829105664', NULL, N'', N'0', NULL, NULL, NULL), (N'43', N'1262665456471920640', NULL, N'', N'0', NULL, NULL, NULL), (N'44', N'1262665628165754880', NULL, N'', N'0', NULL, NULL, NULL), (N'45', N'1262666172682883072', NULL, N'', N'0', NULL, NULL, NULL), (N'47', N'1262723402331885568', NULL, N'', N'0', NULL, NULL, NULL), (N'48', N'1262935771746734080', NULL, N'', N'0', NULL, NULL, NULL), (N'49', N'1262935906522304512', NULL, N'', N'0', NULL, NULL, NULL), (N'50', N'1262936009924481024', NULL, N'', N'0', NULL, NULL, NULL), (N'52', N'1263074419073593344', NULL, N'', N'0', NULL, NULL, NULL), (N'53', N'1263075249394790400', NULL, N'', N'0', NULL, NULL, NULL), (N'54', N'1263075593499684864', NULL, N'', N'0', NULL, NULL, NULL), (N'56', N'1263101898440146944', NULL, N'', N'0', NULL, NULL, NULL), (N'57', N'1263303878648569856', NULL, N'', N'0', NULL, NULL, NULL), (N'58', N'1263304204797648896', NULL, N'', N'0', NULL, NULL, NULL), (N'59', N'1263304872891555840', NULL, N'', N'0', NULL, NULL, NULL), (N'60', N'1263305106250047488', NULL, N'', N'0', NULL, NULL, NULL), (N'61', N'1263305244594970624', NULL, N'', N'0', NULL, NULL, NULL), (N'62', N'1263305430536855552', NULL, N'', N'0', NULL, NULL, NULL), (N'63', N'1263639172959174656', NULL, N'', N'0', NULL, NULL, NULL), (N'64', N'1264799968944640000', NULL, N'', N'0', NULL, NULL, NULL), (N'65', N'1264800070161584128', NULL, N'', N'0', NULL, NULL, NULL), (N'66', N'1267360794414161920', NULL, N'', N'0', NULL, NULL, NULL), (N'67', N'1267383367629807616', NULL, N'', N'0', NULL, NULL, NULL), (N'68', N'1267817055527632896', NULL, N'', N'0', NULL, NULL, NULL), (N'69', N'1267817221286526976', NULL, N'', N'0', NULL, NULL, NULL), (N'70', N'1268893687085518848', NULL, N'', N'0', NULL, NULL, NULL), (N'94', N'1288657613998579712', NULL, N'', N'1', N'1m', N'60', N'200'), (N'95', N'1288657941770854400', NULL, N'', N'0', NULL, NULL, NULL), (N'96', N'1288658134067109888', NULL, N'', N'0', NULL, NULL, NULL), (N'97', N'1288658305156964352', NULL, N'', N'0', NULL, NULL, NULL), (N'98', N'1288658491216289792', NULL, N'', N'0', NULL, NULL, NULL), (N'99', N'1288658638302142464', NULL, N'', N'0', NULL, NULL, NULL), (N'100', N'1288658791784308736', NULL, N'', N'0', NULL, NULL, NULL), (N'101', N'1290849478956199936', NULL, N'', N'0', NULL, NULL, NULL), (N'102', N'1290849628051124224', NULL, N'', N'0', NULL, NULL, NULL), (N'103', N'1290849798553776128', NULL, N'', N'0', NULL, NULL, NULL), (N'105', N'1291259822512693248', NULL, N'', N'0', NULL, NULL, NULL), (N'106', N'1292620505149145088', NULL, N'', N'0', NULL, NULL, NULL), (N'107', N'1292620665505775616', NULL, N'', N'0', NULL, NULL, NULL), (N'108', N'1292620843398791168', NULL, N'', N'0', NULL, NULL, NULL), (N'109', N'1292621027574874112', NULL, N'', N'0', NULL, NULL, NULL), (N'110', N'1292621363161137152', NULL, N'', N'0', NULL, NULL, NULL), (N'111', N'1292621494837116928', NULL, N'', N'0', NULL, NULL, NULL), (N'112', N'1292621629260365824', NULL, N'', N'0', NULL, NULL, NULL), (N'113', N'1292622526073864192', NULL, N'', N'0', NULL, NULL, NULL), (N'114', N'1293470838745821184', NULL, N'', N'0', NULL, NULL, NULL), (N'115', N'1293471661785706496', NULL, N'', N'0', NULL, NULL, NULL), (N'116', N'1293472678392721408', NULL, N'', N'0', NULL, NULL, NULL), (N'117', N'1293472857510473728', NULL, N'', N'0', NULL, NULL, NULL), (N'118', N'1299273336009359360', NULL, N'', N'0', NULL, NULL, NULL), (N'119', N'1299273436282585088', NULL, N'', N'0', NULL, NULL, NULL), (N'120', N'1299273618470567936', NULL, N'', N'0', NULL, NULL, NULL), (N'121', N'1299273770182737920', NULL, N'', N'0', NULL, NULL, NULL), (N'122', N'1299273978023084032', NULL, N'', N'0', NULL, NULL, NULL), (N'123', N'1299274123225694208', NULL, N'', N'0', NULL, NULL, NULL), (N'124', N'1299274222299348992', NULL, N'', N'0', NULL, NULL, NULL), (N'125', N'1304238876758495232', NULL, N'', N'0', NULL, NULL, NULL), (N'126', N'1304678610343383040', NULL, N'', N'0', NULL, NULL, NULL), (N'127', N'1304679169305694208', NULL, N'', N'0', NULL, NULL, NULL), (N'128', N'1310460417141817344', NULL, N'', N'0', NULL, NULL, NULL), (N'129', N'1310502391475519488', NULL, N'', N'0', NULL, NULL, NULL), (N'130', N'1310515546943569920', NULL, N'', N'0', NULL, NULL, NULL), (N'131', N'1310515735292985344', NULL, N'', N'0', NULL, NULL, NULL), (N'132', N'1316628769783480320', NULL, N'', N'0', NULL, NULL, NULL), (N'133', N'1316628940663619584', NULL, N'', N'0', NULL, NULL, NULL), (N'134', N'1316629112428756992', NULL, N'', N'0', NULL, NULL, NULL), (N'135', N'1316652047017246720', NULL, N'', N'0', NULL, NULL, NULL) +INSERT INTO [apigateway].[appapigatewayratelimitrule] VALUES (N'3', N'1261299170387169280', NULL, N'', N'0', NULL, NULL, NULL), (N'4', N'1261585859064872960', NULL, N'', N'0', NULL, NULL, NULL), (N'5', N'1261586605810368512', NULL, N'', N'0', NULL, NULL, NULL), (N'6', N'1261587558609436672', NULL, N'', N'0', NULL, NULL, NULL), (N'7', N'1261588213298348032', NULL, N'', N'0', NULL, NULL, NULL), (N'8', N'1261588367619375104', NULL, N'', N'0', NULL, NULL, NULL), (N'9', N'1261588628450557952', NULL, N'', N'0', NULL, NULL, NULL), (N'10', N'1261588881564221440', NULL, N'', N'0', NULL, NULL, NULL), (N'11', N'1261588983053795328', NULL, N'', N'0', NULL, NULL, NULL), (N'12', N'1261589139039961088', NULL, N'', N'0', NULL, NULL, NULL), (N'13', N'1261589197483393024', NULL, N'', N'0', NULL, NULL, NULL), (N'14', N'1261589278857084928', NULL, N'', N'0', NULL, NULL, NULL), (N'15', N'1261589420356124672', NULL, N'', N'0', NULL, NULL, NULL), (N'16', N'1261589960393736192', NULL, N'', N'0', NULL, NULL, NULL), (N'17', N'1261606600242085888', NULL, N'', N'0', NULL, NULL, NULL), (N'18', N'1261606689601732608', NULL, N'', N'0', NULL, NULL, NULL), (N'21', N'1262220447629058048', NULL, N'', N'0', NULL, NULL, NULL), (N'22', N'1262230734939758592', NULL, N'', N'0', NULL, NULL, NULL), (N'23', N'1262296916350869504', NULL, N'', N'0', NULL, NULL, NULL), (N'24', N'1262632376348594176', NULL, N'', N'0', NULL, NULL, NULL), (N'25', N'1262632791869902848', NULL, N'', N'0', NULL, NULL, NULL), (N'28', N'1262660336921235456', NULL, N'', N'0', NULL, NULL, NULL), (N'29', N'1262660528277966848', NULL, N'', N'0', NULL, NULL, NULL), (N'30', N'1262660706875625472', NULL, N'', N'0', NULL, NULL, NULL), (N'31', N'1262660966393991168', NULL, N'', N'0', NULL, NULL, NULL), (N'32', N'1262661109474283520', NULL, N'', N'0', NULL, NULL, NULL), (N'33', N'1262663888804663296', NULL, N'', N'0', NULL, NULL, NULL), (N'34', N'1262664024096133120', NULL, N'', N'0', NULL, NULL, NULL), (N'35', N'1262664186252120064', NULL, N'', N'0', NULL, NULL, NULL), (N'36', N'1262664357044178944', NULL, N'', N'0', NULL, NULL, NULL), (N'37', N'1262664632928718848', NULL, N'', N'0', NULL, NULL, NULL), (N'38', N'1262664751409418240', NULL, N'', N'0', NULL, NULL, NULL), (N'39', N'1262664871274237952', NULL, N'', N'0', NULL, NULL, NULL), (N'40', N'1262665026111164416', NULL, N'', N'0', NULL, NULL, NULL), (N'41', N'1262665159905267712', NULL, N'', N'0', NULL, NULL, NULL), (N'42', N'1262665329829105664', NULL, N'', N'0', NULL, NULL, NULL), (N'43', N'1262665456471920640', NULL, N'', N'0', NULL, NULL, NULL), (N'44', N'1262665628165754880', NULL, N'', N'0', NULL, NULL, NULL), (N'45', N'1262666172682883072', NULL, N'', N'0', NULL, NULL, NULL), (N'47', N'1262723402331885568', NULL, N'', N'0', NULL, NULL, NULL), (N'48', N'1262935771746734080', NULL, N'', N'0', NULL, NULL, NULL), (N'49', N'1262935906522304512', NULL, N'', N'0', NULL, NULL, NULL), (N'52', N'1263074419073593344', NULL, N'', N'0', NULL, NULL, NULL), (N'53', N'1263075249394790400', NULL, N'', N'0', NULL, NULL, NULL), (N'54', N'1263075593499684864', NULL, N'', N'0', NULL, NULL, NULL), (N'56', N'1263101898440146944', NULL, N'', N'0', NULL, NULL, NULL), (N'57', N'1263303878648569856', NULL, N'', N'0', NULL, NULL, NULL), (N'58', N'1263304204797648896', NULL, N'', N'0', NULL, NULL, NULL), (N'59', N'1263304872891555840', NULL, N'', N'0', NULL, NULL, NULL), (N'60', N'1263305106250047488', NULL, N'', N'0', NULL, NULL, NULL), (N'61', N'1263305244594970624', NULL, N'', N'0', NULL, NULL, NULL), (N'62', N'1263305430536855552', NULL, N'', N'0', NULL, NULL, NULL), (N'63', N'1263639172959174656', NULL, N'', N'0', NULL, NULL, NULL), (N'64', N'1264799968944640000', NULL, N'', N'0', NULL, NULL, NULL), (N'65', N'1264800070161584128', NULL, N'', N'0', NULL, NULL, NULL), (N'66', N'1267360794414161920', NULL, N'', N'0', NULL, NULL, NULL), (N'67', N'1267383367629807616', NULL, N'', N'0', NULL, NULL, NULL), (N'68', N'1267817055527632896', NULL, N'', N'0', NULL, NULL, NULL), (N'69', N'1267817221286526976', NULL, N'', N'0', NULL, NULL, NULL), (N'70', N'1268893687085518848', NULL, N'', N'0', NULL, NULL, NULL), (N'94', N'1288657613998579712', NULL, N'', N'1', N'1m', N'60', N'200'), (N'95', N'1288657941770854400', NULL, N'', N'0', NULL, NULL, NULL), (N'96', N'1288658134067109888', NULL, N'', N'0', NULL, NULL, NULL), (N'97', N'1288658305156964352', NULL, N'', N'0', NULL, NULL, NULL), (N'98', N'1288658491216289792', NULL, N'', N'0', NULL, NULL, NULL), (N'99', N'1288658638302142464', NULL, N'', N'0', NULL, NULL, NULL), (N'100', N'1288658791784308736', NULL, N'', N'0', NULL, NULL, NULL), (N'101', N'1290849478956199936', NULL, N'', N'0', NULL, NULL, NULL), (N'102', N'1290849628051124224', NULL, N'', N'0', NULL, NULL, NULL), (N'103', N'1290849798553776128', NULL, N'', N'0', NULL, NULL, NULL), (N'105', N'1291259822512693248', NULL, N'', N'0', NULL, NULL, NULL), (N'106', N'1292620505149145088', NULL, N'', N'0', NULL, NULL, NULL), (N'107', N'1292620665505775616', NULL, N'', N'0', NULL, NULL, NULL), (N'108', N'1292620843398791168', NULL, N'', N'0', NULL, NULL, NULL), (N'109', N'1292621027574874112', NULL, N'', N'0', NULL, NULL, NULL), (N'110', N'1292621363161137152', NULL, N'', N'0', NULL, NULL, NULL), (N'111', N'1292621494837116928', NULL, N'', N'0', NULL, NULL, NULL), (N'112', N'1292621629260365824', NULL, N'', N'0', NULL, NULL, NULL), (N'113', N'1292622526073864192', NULL, N'', N'0', NULL, NULL, NULL), (N'114', N'1293470838745821184', NULL, N'', N'0', NULL, NULL, NULL), (N'115', N'1293471661785706496', NULL, N'', N'0', NULL, NULL, NULL), (N'116', N'1293472678392721408', NULL, N'', N'0', NULL, NULL, NULL), (N'117', N'1293472857510473728', NULL, N'', N'0', NULL, NULL, NULL), (N'118', N'1299273336009359360', NULL, N'', N'0', NULL, NULL, NULL), (N'119', N'1299273436282585088', NULL, N'', N'0', NULL, NULL, NULL), (N'120', N'1299273618470567936', NULL, N'', N'0', NULL, NULL, NULL), (N'121', N'1299273770182737920', NULL, N'', N'0', NULL, NULL, NULL), (N'122', N'1299273978023084032', NULL, N'', N'0', NULL, NULL, NULL), (N'123', N'1299274123225694208', NULL, N'', N'0', NULL, NULL, NULL), (N'124', N'1299274222299348992', NULL, N'', N'0', NULL, NULL, NULL), (N'125', N'1304238876758495232', NULL, N'', N'0', NULL, NULL, NULL), (N'126', N'1304678610343383040', NULL, N'', N'0', NULL, NULL, NULL), (N'127', N'1304679169305694208', NULL, N'', N'0', NULL, NULL, NULL), (N'128', N'1310460417141817344', NULL, N'', N'0', NULL, NULL, NULL), (N'129', N'1310502391475519488', NULL, N'', N'0', NULL, NULL, NULL), (N'130', N'1310515546943569920', NULL, N'', N'0', NULL, NULL, NULL), (N'131', N'1310515735292985344', NULL, N'', N'0', NULL, NULL, NULL), (N'132', N'1316628769783480320', NULL, N'', N'0', NULL, NULL, NULL), (N'133', N'1316628940663619584', NULL, N'', N'0', NULL, NULL, NULL), (N'134', N'1316629112428756992', NULL, N'', N'0', NULL, NULL, NULL), (N'135', N'1316652047017246720', NULL, N'', N'0', NULL, NULL, NULL), (N'136', N'1316913899996737536', NULL, N'', N'0', NULL, NULL, NULL), (N'137', N'1319200951383199744', NULL, N'', N'0', NULL, NULL, NULL) GO COMMIT @@ -486,7 +486,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewayreroute] VALUES (N'4', N'{}', N'84059fcecc91498b9beafac914865e2c', N'1261299170387169280', N'【后台管理】- 权限管理', N'/api/permission-management/permissions', N'', NULL, N'/api/permission-management/permissions', N'GET,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30010,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'5', N'{}', N'f168778a390d49d69d728ebd72b230ef', N'1261585859064872960', N'【身份认证服务】- 客户端管理', N'/api/IdentityServer/Clients', N'', NULL, N'/api/IdentityServer/Clients', N'POST,GET,PUT,', N'', N'', N'X-Forwarded-For:{RemoteIpAddress},', N'', N'', N'', NULL, N'1', N'', NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'6', N'{}', N'd91d31c630dc4e4bae0fef8c3aa60427', N'1261586605810368512', N'【身份认证服务】- 查询客户端', N'/api/IdentityServer/Clients/{Id}', N'', NULL, N'/api/IdentityServer/Clients/{Id}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'7', N'{}', N'b4ce189320804dc6b87e602594e93d35', N'1261587558609436672', N'【服务网关管理】- 路由组管理', N'/api/ApiGateway/RouteGroups', N'', N'', N'/api/ApiGateway/RouteGroups', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'8', N'{}', N'8736fefa36da4b129f3fcf6aa095f2ce', N'1261588213298348032', N'【服务网关管理】- 查询单个路由组', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'9', N'{}', N'befd14ad39e244bc9dea7e0c01e642ce', N'1261588367619375104', N'【服务网关管理】- 查询所有有效路由组', N'/api/ApiGateway/RouteGroups/Actived', N'', N'', N'/api/ApiGateway/RouteGroups/Actived', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'10', N'{}', N'0a95945d77144ce69addb0d1e8d37837', N'1261588628450557952', N'【服务网关管理】- 基础配置', N'/api/ApiGateway/Globals', N'', N'', N'/api/ApiGateway/Globals', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'11', N'{}', N'70ee7f919bf44b42b549c905316bfd75', N'1261588881564221440', N'【服务网关管理】- 查询单个基础配置', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'12', N'{}', N'caf54542d561428a9123ebed88e4b2e9', N'1261588983053795328', N'【服务网关管理】- 路由配置', N'/api/ApiGateway/Routes', N'', N'', N'/api/ApiGateway/Routes', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'13', N'{}', N'df6c48fdaab44a37842992ae61c59dc5', N'1261589139039961088', N'【服务网关管理】- 通过标识查询路由', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'', N'', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'14', N'{}', N'aaeaedebd24a4011ad565b5559f84c5f', N'1261589197483393024', N'【服务网关管理】- 通过名称查询路由', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'', N'', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'15', N'{}', N'559c9f1b2b8c44caac86f7a643a16aaa', N'1261589278857084928', N'【服务网关管理】- 通过应用标识查询路由', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'16', N'{}', N'00d0a12f403a4a919c99c534bd76d0d0', N'1261589420356124672', N'【服务网关管理】- 清空应用标识下所有路由', N'/api/ApiGateway/Routes/Clear', N'', N'', N'/api/ApiGateway/Routes/Clear', N'DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'17', N'{}', N'8c308f1386ad49c799cd281eb95170ac', N'1261589960393736192', N'【服务网关管理】- 通过应用标识查询动态路由', N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'18', N'{}', N'e659ebbf61534a978335cfeabdc0b375', N'1261606600242085888', N'【服务网关管理】- 通过应用标识查询聚合路由', N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'19', N'{}', N'd665e4491b81413385858601d9cf9a1d', N'1261606689601732608', N'【服务网关管理】- 聚合路由', N'/api/ApiGateway/Aggregates', N'', NULL, N'/api/ApiGateway/Aggregates', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'22', N'{}', N'47c55e759d824450a987a705fd08387c', N'1262220447629058048', N'【身份认证服务】- 客户端密钥', N'/api/IdentityServer/Clients/Secrets', N'', NULL, N'/api/IdentityServer/Clients/Secrets', N'PUT,POST,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'23', N'{}', N'4da82cbff6ab48e185100526eaed22df', N'1262230734939758592', N'【身份认证服务】- 客户端声明', N'/api/IdentityServer/Clients/Claims', N'', NULL, N'/api/IdentityServer/Clients/Claims', N'PUT,POST,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'25', N'{}', N'b6009df9b18c44b3aa2b77f27b0c2abb', N'1262296916350869504', N'【身份认证服务】- 客户端属性', N'/api/IdentityServer/Clients/Properties', N'', NULL, N'/api/IdentityServer/Clients/Properties', N'PUT,POST,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'26', N'{}', N'401a7a8e8a2f41c599b1b87b55249a32', N'1262632376348594176', N'【身份认证服务】- Api资源管理', N'/api/IdentityServer/ApiResources', N'', N'', N'/api/IdentityServer/ApiResources', N'GET,POST,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'27', N'{}', N'c662a4c29e654f9da6eb73ee456b533a', N'1262632791869902848', N'【身份认证服务】- 单个Api资源', N'/api/IdentityServer/ApiResources/{Id}', N'', N'', N'/api/IdentityServer/ApiResources/{Id}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'28', N'{}', N'a0c2bdfdd0de4832b63d6dc3696c9c26', N'1262632904575045632', N'【身份认证服务】- Api资源密钥', N'/api/IdentityServer/ApiResources/Secrets', N'', N'', N'/api/IdentityServer/ApiResources/Secrets', N'DELETE,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'29', N'{}', N'fb0e7ca974f243ce9f4034b39bdda326', N'1262632976616411136', N'【身份认证服务】- Api资源作用域', N'/api/IdentityServer/ApiResources/Scopes', N'', N'', N'/api/IdentityServer/ApiResources/Scopes', N'DELETE,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'30', N'{}', N'0f9875697b74420c9dc2eaf77099b210', N'1262660336921235456', N'【身份认证服务】- 用户登录', N'/api/account/login', N'', N'', N'/api/account/login', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'31', N'{}', N'a890c6ecc6a64c9fa313a0f6b5406e1c', N'1262660528277966848', N'【身份认证服务】- 用户登出', N'/api/account/logout', N'', N'', N'/api/account/logout', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'32', N'{}', N'88de580b6beb4d9d9d4367840ba1fcea', N'1262660706875625472', N'【身份认证服务】- 检查密码', N'/api/account/checkPassword', N'', N'', N'/api/account/checkPassword', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'33', N'{}', N'78f3c1adc7a54696af37a419eda47c62', N'1262660966393991168', N'【身份认证服务】- 个人信息页', N'/api/identity/my-profile', N'', N'', N'/api/identity/my-profile', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'34', N'{}', N'95b23aa5cebb40598a78c0761cfd0b26', N'1262661109474283520', N'【身份认证服务】- 修改密码', N'/api/identity/my-profile/change-password', N'', N'', N'/api/identity/my-profile/change-password', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'35', N'{}', N'4828f7c2aff8485189f37aba5de62d60', N'1262663888804663296', N'【身份认证管理】- 角色管理', N'/api/identity/roles', N'', N'', N'/api/identity/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'36', N'{}', N'0fddcd3b50a24c6795ec9034fdb44778', N'1262664024096133120', N'【身份认证服务】- 角色列表', N'/api/identity/roles/all', N'', N'', N'/api/identity/roles/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'37', N'{}', N'191e555219e845069dfd93793263a840', N'1262664186252120064', N'【身份认证服务】- 单个角色', N'/api/identity/roles/{id}', N'', N'', N'/api/identity/roles/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'38', N'{}', N'c316858e82f74e6ca6e923d6b3a3fa76', N'1262664357044178944', N'【身份认证服务】- 用户注册', N'/api/account/register', N'', N'', N'/api/account/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'39', N'{}', N'db53b6f957914a10a6a97ba306b1f6ef', N'1262664632928718848', N'【身份认证服务】- 单个用户', N'/api/identity/users/{id}', N'', N'', N'/api/identity/users/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'40', N'{}', N'1833434b8ce34f8ab791e7e950f4c61f', N'1262664751409418240', N'【身份认证服务】- 用户管理', N'/api/identity/users', N'', N'', N'/api/identity/users', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'41', N'{}', N'b3c963a1612144918bffaf272697498c', N'1262664871274237952', N'【身份认证服务】- 用户角色', N'/api/identity/users/{id}/roles', N'', N'', N'/api/identity/users/{id}/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'42', N'{}', N'33dd757b79cb4f52994af13bfb4f6783', N'1262665026111164416', N'【身份认证服务】- 通过用户名查询用户', N'/api/identity/users/by-username/{userName}', N'', N'', N'/api/identity/users/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'43', N'{}', N'e46fd6cb3a104da3aadfe0149fe4de68', N'1262665159905267712', N'【身份认证服务】- 通过邮件查询用户', N'/api/identity/users/by-email/{email}', N'', N'', N'/api/identity/users/by-email/{email}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'44', N'{}', N'8c8ec5ad6aaa4145981ee7ac876c36c9', N'1262665329829105664', N'【身份认证服务】- 通过标识查询用户', N'/api/identity/users/lookup/{id}', N'', N'', N'/api/identity/users/lookup/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'45', N'{}', N'f5c0c8c02c0846fdbe5015cd86f3d81b', N'1262665456471920640', N'【身份认证服务】- 通过名称查询用户', N'/api/identity/users/lookup/by-username/{userName}', N'', N'', N'/api/identity/users/lookup/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'46', N'{}', N'ecf0ea4a3e3c4b2e8fa3621514d00c74', N'1262665628165754880', N'【基础服务】- 通过名称查询租户', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'47', N'{}', N'69132bc515b64005af4292ce0dee5626', N'1262666172682883072', N'【基础服务】- 通过标识查询租户', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'49', N'{}', N'4114a097b9e04a9e90458edf02ef41c7', N'1262723402331885568', N'【身份认证服务】- 克隆客户端', N'/api/IdentityServer/Clients/Clone', N'', N'', N'/api/IdentityServer/Clients/Clone', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'50', N'{}', N'2a9cc98d3ed0462d98c4bf0e946f410d', N'1262935771746734080', N'【身份认证服务】- 身份资源管理', N'/api/IdentityServer/IdentityResources', N'', N'', N'/api/IdentityServer/IdentityResources', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'51', N'{}', N'4d36b0ea5b92473ea5de3e91ff155830', N'1262935906522304512', N'【身份认证服务】- 查询身份资源', N'/api/IdentityServer/IdentityResources/{Id}', N'', N'', N'/api/IdentityServer/IdentityResources/{Id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'52', N'{}', N'387df08693e54e91ac055a2324d4c10e', N'1262936009924481024', N'【身份认证服务】- 身份资源属性', N'/api/IdentityServer/IdentityResources/Properties', N'', N'', N'/api/IdentityServer/IdentityResources/Properties', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'54', N'{}', N'7b847d8434bc4d1db07fa8961d90c14a', N'1263074419073593344', N'【服务网关管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/apigateway/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'55', N'{}', N'ca2cedfa620045a9adef0be2f958c4bc', N'1263075249394790400', N'【服务网关管理】- 查询聚合路由', N'/api/ApiGateway/Aggregates/{RouteId}', N'', N'', N'/api/ApiGateway/Aggregates/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'57', N'{}', N'98fbc99fc8644946ac0a72cc3dc5fd1f', N'1263075593499684864', N'【服务网关管理】- 聚合路由配置', N'/api/ApiGateway/Aggregates/RouteConfig', N'', N'', N'/api/ApiGateway/Aggregates/RouteConfig', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'59', N'{}', N'c692b30c72d4424eb4740ac49f4e9373', N'1263101898440146944', N'【服务网关管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/apigateway/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'60', N'{}', N'8409117162504f71aa66982f05c38a80', N'1263303878648569856', N'【平台服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/platform/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'61', N'{}', N'9f520820071b4e14bc94ab57989cea1f', N'1263304204797648896', N'【平台服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/platform/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'62', N'{}', N'530ab314560f41678b40f48da9383d51', N'1263304872891555840', N'【后台管理】- 租户管理', N'/api/tenant-management/tenants', N'', N'', N'/api/tenant-management/tenants', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'63', N'{}', N'21334c6da4c349cc883c38c13de0e754', N'1263305106250047488', N'【后台管理】- 特定租户管理', N'/api/tenant-management/tenants/{id}', N'', N'', N'/api/tenant-management/tenants/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'64', N'{}', N'cc8fdf1b2d0b414ebf2dc51a6dc78305', N'1263305244594970624', N'【后台管理】- 租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'2', N'30000', N'1', N'', N'TEST-APP'), (N'65', N'{}', N'aaf285ed10da4024ba561d5cf8c6322b', N'1263305430536855552', N'【后台管理】- 特定租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string/{name}', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation/{name}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'66', N'{}', N'b6ec80673b354c239def3bdce31b4cc0', N'1263639172959174656', N'【后台管理】- 全局设置', N'/api/setting-management/settings/by-global', N'', N'', N'/api/setting-management/settings/by-global', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'67', N'{}', N'755b4dce5c34444785fa3b647fef4131', N'1264799968944640000', N'【身份认证服务】- 验证手机号', N'/api/account/phone/verify', N'', N'', N'/api/account/phone/verify', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'68', N'{}', N'535191c570ae453ab320012304d7a62c', N'1264800070161584128', N'【身份认证服务】- 手机号注册', N'/api/account/phone/register', N'', N'', N'/api/account/phone/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'69', N'{}', N'723c9b111f9f4a1aa804118cdde193d3', N'1267360794414161920', N'【消息服务】- 通知', N'/signalr-hubs/notifications/{everything}', N'', N'', N'/signalr-hubs/notifications/{everything}', N'POST,GET,OPTIONS,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'70', N'{}', N'f3aa2b42dd9f468aa5aae4ef64754427', N'1267383367629807616', N'【消息服务】- 通知0', N'/signalr-hubs/notifications', N'', N'', N'/signalr-hubs/notifications', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'71', N'{}', N'99dc8259c50044008c8aede7442ddde3', N'1267817055527632896', N'【消息服务】- 聊天', N'/signalr-hubs/message', N'', N'', N'/signalr-hubs/message', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'72', N'{}', N'4ec40b72d469474ba10ae02e8d3298bb', N'1267817221286526976', N'【消息服务】- 聊天1', N'/signalr-hubs/message/{everything}', N'', N'', N'/signalr-hubs/message/{everything}', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'73', N'{}', N'cfb5f09a12bf495fbcaf2fa5d9123a40', N'1268893687085518848', N'【身份认证服务】- 重置密码', N'/api/account/phone/reset-password', N'', N'', N'/api/account/phone/reset-password', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'101', N'{}', N'997a4c27a433458aafed9b8aa252d957', N'1288657613998579712', N'【身份认证服务】- 组织机构列表', N'/api/identity/organization-units', N'', N'', N'/api/identity/organization-units', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'102', N'{}', N'a2c6acc9882a425ab26bd3ad5a9c17c6', N'1288657941770854400', N'【身份认证服务】- 组织机构管理', N'/api/identity/organization-units/{id}', N'', N'', N'/api/identity/organization-units/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'103', N'{}', N'390acfb0e16943c6b61e731d47c282e9', N'1288658134067109888', N'【身份认证服务】- 组织机构移动', N'/api/identity/organization-units/{id}/move', N'', N'', N'/api/identity/organization-units/{id}/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'104', N'{}', N'3515e75becf9447492ad60466b27c397', N'1288658305156964352', N'【身份认证服务】- 查询组织机构子级', N'/api/identity/organization-units/find-children', N'', N'', N'/api/identity/organization-units/find-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'105', N'{}', N'aab0a24d930f4f9687497e5ccaac2a31', N'1288658491216289792', N'【身份认证服务】- 查询组织机构最后一个子节点', N'/api/identity/organization-units/last-children', N'', N'', N'/api/identity/organization-units/last-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'106', N'{}', N'edf67e297c6d494baf3ea66465418faf', N'1288658638302142464', N'【身份认证服务】- 组织机构角色管理', N'/api/identity/organization-units/management-roles', N'', N'', N'/api/identity/organization-units/management-roles', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'107', N'{}', N'21bcb13e71c648a98861ce9b6fb3e7b0', N'1288658791784308736', N'【身份认证服务】- 组织机构用户管理', N'/api/identity/organization-units/management-users', N'', N'', N'/api/identity/organization-units/management-users', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'108', N'{}', N'1982bc6ffd92445b9b3f47067378d1fc', N'1290849478956199936', N'【后台管理】- 当前租户设置', N'/api/setting-management/settings/by-current-tenant', N'', N'', N'/api/setting-management/settings/by-current-tenant', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'109', N'{}', N'a7df3a04805d4cc8a6e6b3823c6dd468', N'1290849628051124224', N'【后台管理】- 用户设置', N'/api/setting-management/settings/by-user/{userId}', N'', N'', N'/api/setting-management/settings/by-user/{userId}', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'110', N'{}', N'ef6e38a529a345fab67f6a627cf20635', N'1290849798553776128', N'【后台管理】- 当前用户设置', N'/api/setting-management/settings/by-current-user', N'', N'', N'/api/setting-management/settings/by-current-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'112', N'{}', N'9844fed6507844f2ac64bd08649bd3a6', N'1291259822512693248', N'【身份认证服务】- 查询组织机构根节点', N'/api/identity/organization-units/root-node', N'', N'', N'/api/identity/organization-units/root-node', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'113', N'{}', N'24d8794cf8f943b4ac45d2bcccf7c128', N'1292620505149145088', N'【平台服务】- 文件系统', N'/api/file-management/file-system', N'', N'', N'/api/file-management/file-system', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'114', N'{}', N'0acf6762d3af43efb655107e0039f5fc', N'1292620665505775616', N'【平台服务】- 文件系统 - 目录管理', N'/api/file-management/file-system/folders', N'', N'', N'/api/file-management/file-system/folders', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'115', N'{}', N'8b4363f70865419089b5f62ba35382df', N'1292620843398791168', N'【平台服务】- 文件系统 - 文件管理', N'/api/file-management/file-system/files', N'', N'', N'/api/file-management/file-system/files', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'1200000', N'1', N'', N'TEST-APP'), (N'116', N'{}', N'7eb315567bbc470bbbfd26923c5d0aba', N'1292621027574874112', N'【平台服务】- 文件系统 - 复制目录', N'/api/file-management/file-system/folders/copy', N'', N'', N'/api/file-management/file-system/folders/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'117', N'{}', N'af5853680cff454fa66ff6022f18da23', N'1292621363161137152', N'【平台服务】- 文件系统 - 移动目录', N'/api/file-management/file-system/folders/move', N'', N'', N'/api/file-management/file-system/folders/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'118', N'{}', N'6daa6d8c8adb466899988fd8181c29a8', N'1292621494837116928', N'【平台服务】- 文件系统 - 复制文件', N'/api/file-management/file-system/files/copy', N'', N'', N'/api/file-management/file-system/files/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'119', N'{}', N'9560caaa3bd9424984c44724aa54bfe9', N'1292621629260365824', N'【平台服务】- 文件系统 - 移动文件', N'/api/file-management/file-system/files/move', N'', N'', N'/api/file-management/file-system/files/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'120', N'{}', N'fc2aaa6035484201b9014912930fb7cb', N'1292622526073864192', N'【平台服务】- 文件系统 - 详情页', N'/api/file-management/file-system/profile', N'', N'', N'/api/file-management/file-system/profile', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'121', N'{}', N'c6c7b027000942dda8ba0d2e2d8cf705', N'1293470838745821184', N'【后台管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/backend-admin/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'122', N'{}', N'becd4342079d4399abda5b5ba3b46fdc', N'1293471661785706496', N'【消息服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/messages/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'123', N'{}', N'c828140cee3043c18ffc274f6461f0f2', N'1293472678392721408', N'【后台管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/backend-admin/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'124', N'{}', N'e683cff8066d4c2899a17d0f618f1a0b', N'1293472857510473728', N'【消息服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/messages/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'125', N'{}', N'0e9c3bff5b58428eba97a5516140ba5e', N'1299273336009359360', N'【消息服务】- Hangfire仪表板 ', N'/hangfire', N'', N'', N'/hangfire', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'126', N'{}', N'e906924ad3a947cf8e6956e2dd258192', N'1299273436282585088', N'【消息服务】- Hangfire仪表板 - 主页', N'/hangfire/', N'', N'', N'/hangfire/', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'127', N'{}', N'e02f2049efbc4ee1ad6629bd0341ed2b', N'1299273618470567936', N'【消息服务】- Hangfire仪表板 - 状态', N'/hangfire/stats', N'', N'', N'/hangfire/stats', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'128', N'{}', N'f8d2b2f0f1d649c2a07eeef23d6adb0e', N'1299273770182737920', N'【消息服务】- Hangfire仪表板 - 作业管理', N'/hangfire/jobs/{everything}', N'', N'', N'/hangfire/jobs/{everything}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'129', N'{}', N'9785be7a29774b468e271b23009fe115', N'1299273978023084032', N'【消息服务】- Hangfire仪表板 - 重试', N'/hangfire/retries', N'', N'', N'/hangfire/retries', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'130', N'{}', N'9c0c1cd196bb45c0bc03fafb7a1eb8f2', N'1299274123225694208', N'【消息服务】- Hangfire仪表板 - 周期性作业', N'/hangfire/recurring', N'', N'', N'/hangfire/recurring', N'GET,POST,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'131', N'{}', N'243bafe828be463ea63a3e2b521f9923', N'1299274222299348992', N'【消息服务】- Hangfire仪表板 - 服务器列表', N'/hangfire/servers', N'', N'', N'/hangfire/servers', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'132', N'{}', N'57a8ac1b41bb434cad38fbde0e2ba2f0', N'1304238876758495232', N'【后台管理】- 管理功能', N'/api/feature-management/features', N'', N'', N'/api/feature-management/features', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'133', N'{}', N'40a150f629b047f587c91a9436a699c0', N'1304678610343383040', N'【身份认证服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/identity-server/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'134', N'{}', N'3a2d5d538fa44ac690402fc5c4e1a401', N'1304679169305694208', N'【身份认证服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/identity-server/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'135', N'{}', N'2ecfe7483bc94c28ad0769b654eb765d', N'1310460417141817344', N'【后台管理】- 审计日志列表', N'/api/auditing/audit-log', N'', N'', N'/api/auditing/audit-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'136', N'{}', N'744e340c0024462d88458b7ea9605b3c', N'1310502391475519488', N'【后台服务】- 安全日志列表', N'/api/auditing/security-log', N'', N'', N'/api/auditing/security-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'137', N'{}', N'a99639f4172547c4ba9b4f4ca5cb4ab9', N'1310515546943569920', N'【后台服务】- 安全日志', N'/api/auditing/security-log/{id}', N'', N'', N'/api/auditing/security-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'138', N'{}', N'c3ebc82d55f640fb9d70a911e97e4ec1', N'1310515735292985344', N'【后台管理】- 审计日志', N'/api/auditing/audit-log/{id}', N'', N'', N'/api/auditing/audit-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'139', N'{}', N'0379fcb3a9cd4b13b562b3b5b5c3eb7d', N'1316628769783480320', N'【身份认证服务】- 声明类型', N'/api/identity/claim-types', N'', N'', N'/api/identity/claim-types', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'140', N'{}', N'de25c9a80d994f728b37eb483b2f5127', N'1316628940663619584', N'【身份认证服务】- 管理声明类型', N'/api/identity/claim-types/{id}', N'', N'', N'/api/identity/claim-types/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'141', N'{}', N'25c19106baff4cf3a877ae8cd690a1b5', N'1316629112428756992', N'【身份认证服务】- 查询在用的声明类型列表', N'/api/identity/claim-types/actived-list', N'', N'', N'/api/identity/claim-types/actived-list', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'142', N'{}', N'd42f8b779cf344eeaa24df0ae37fb7cf', N'1316652047017246720', N'【身份认证服务】- 管理用户声明', N'/api/identity/users/claims/{id}', N'', N'', N'/api/identity/users/claims/{id}', N'POST,PUT,DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP') +INSERT INTO [apigateway].[appapigatewayreroute] VALUES (N'4', N'{}', N'84059fcecc91498b9beafac914865e2c', N'1261299170387169280', N'【后台管理】- 权限管理', N'/api/permission-management/permissions', N'', NULL, N'/api/permission-management/permissions', N'GET,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30010,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'5', N'{}', N'f2312eed73cc4d3cbefcd1816849fd74', N'1261585859064872960', N'【身份认证服务】- 客户端', N'/api/identity-server/clients', N'', NULL, N'/api/identity-server/clients', N'POST,GET,', N'', N'', N'X-Forwarded-For:{RemoteIpAddress},', N'', N'', N'', NULL, N'1', N'', NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'6', N'{}', N'b764ec7b994147abb12974bfcee4a0a9', N'1261586605810368512', N'【身份认证服务】- 管理客户端', N'/api/identity-server/clients/{Id}', N'', NULL, N'/api/identity-server/clients/{Id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'7', N'{}', N'b4ce189320804dc6b87e602594e93d35', N'1261587558609436672', N'【服务网关管理】- 路由组管理', N'/api/ApiGateway/RouteGroups', N'', N'', N'/api/ApiGateway/RouteGroups', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'8', N'{}', N'8736fefa36da4b129f3fcf6aa095f2ce', N'1261588213298348032', N'【服务网关管理】- 查询单个路由组', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'9', N'{}', N'befd14ad39e244bc9dea7e0c01e642ce', N'1261588367619375104', N'【服务网关管理】- 查询所有有效路由组', N'/api/ApiGateway/RouteGroups/Actived', N'', N'', N'/api/ApiGateway/RouteGroups/Actived', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'10', N'{}', N'0a95945d77144ce69addb0d1e8d37837', N'1261588628450557952', N'【服务网关管理】- 基础配置', N'/api/ApiGateway/Globals', N'', N'', N'/api/ApiGateway/Globals', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'11', N'{}', N'70ee7f919bf44b42b549c905316bfd75', N'1261588881564221440', N'【服务网关管理】- 查询单个基础配置', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'12', N'{}', N'caf54542d561428a9123ebed88e4b2e9', N'1261588983053795328', N'【服务网关管理】- 路由配置', N'/api/ApiGateway/Routes', N'', N'', N'/api/ApiGateway/Routes', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'13', N'{}', N'df6c48fdaab44a37842992ae61c59dc5', N'1261589139039961088', N'【服务网关管理】- 通过标识查询路由', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'', N'', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'14', N'{}', N'aaeaedebd24a4011ad565b5559f84c5f', N'1261589197483393024', N'【服务网关管理】- 通过名称查询路由', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'', N'', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'15', N'{}', N'559c9f1b2b8c44caac86f7a643a16aaa', N'1261589278857084928', N'【服务网关管理】- 通过应用标识查询路由', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'16', N'{}', N'00d0a12f403a4a919c99c534bd76d0d0', N'1261589420356124672', N'【服务网关管理】- 清空应用标识下所有路由', N'/api/ApiGateway/Routes/Clear', N'', N'', N'/api/ApiGateway/Routes/Clear', N'DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'17', N'{}', N'8c308f1386ad49c799cd281eb95170ac', N'1261589960393736192', N'【服务网关管理】- 通过应用标识查询动态路由', N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'18', N'{}', N'e659ebbf61534a978335cfeabdc0b375', N'1261606600242085888', N'【服务网关管理】- 通过应用标识查询聚合路由', N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'19', N'{}', N'd665e4491b81413385858601d9cf9a1d', N'1261606689601732608', N'【服务网关管理】- 聚合路由', N'/api/ApiGateway/Aggregates', N'', NULL, N'/api/ApiGateway/Aggregates', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'22', N'{}', N'2aad614e2c2a497593a4784ff639c3d9', N'1262220447629058048', N'【身份认证服务】- 克隆客户端', N'/api/identity-server/clients/{id}/clone', N'', NULL, N'/api/identity-server/clients/{id}/clone', N'POST,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'23', N'{}', N'892101e2e4e34bcfab42cdb5c4452643', N'1262230734939758592', N'【身份认证服务】- 可用的Api资源', N'/api/identity-server/clients/assignable-api-resources', N'', NULL, N'/api/identity-server/clients/assignable-api-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'25', N'{}', N'38833181fe6b4ab0a0baf21ea22edb94', N'1262296916350869504', N'【身份认证服务】- 可用的身份资源', N'/api/identity-server/clients/assignable-identity-resources', N'', NULL, N'/api/identity-server/clients/assignable-identity-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'26', N'{}', N'3fccd1318d0d47d9aef85542668829a6', N'1262632376348594176', N'【身份认证服务】- Api资源', N'/api/identity-server/api-resources', N'', N'', N'/api/identity-server/api-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'27', N'{}', N'de6bd0ddea6d4019b4855be5442fafdc', N'1262632791869902848', N'【身份认证服务】- 管理Api资源', N'/api/identity-server/api-resources/{id}', N'', N'', N'/api/identity-server/api-resources/{id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'30', N'{}', N'0f9875697b74420c9dc2eaf77099b210', N'1262660336921235456', N'【身份认证服务】- 用户登录', N'/api/account/login', N'', N'', N'/api/account/login', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'31', N'{}', N'a890c6ecc6a64c9fa313a0f6b5406e1c', N'1262660528277966848', N'【身份认证服务】- 用户登出', N'/api/account/logout', N'', N'', N'/api/account/logout', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'32', N'{}', N'88de580b6beb4d9d9d4367840ba1fcea', N'1262660706875625472', N'【身份认证服务】- 检查密码', N'/api/account/checkPassword', N'', N'', N'/api/account/checkPassword', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'33', N'{}', N'78f3c1adc7a54696af37a419eda47c62', N'1262660966393991168', N'【身份认证服务】- 个人信息页', N'/api/identity/my-profile', N'', N'', N'/api/identity/my-profile', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'34', N'{}', N'95b23aa5cebb40598a78c0761cfd0b26', N'1262661109474283520', N'【身份认证服务】- 修改密码', N'/api/identity/my-profile/change-password', N'', N'', N'/api/identity/my-profile/change-password', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'35', N'{}', N'4828f7c2aff8485189f37aba5de62d60', N'1262663888804663296', N'【身份认证管理】- 角色管理', N'/api/identity/roles', N'', N'', N'/api/identity/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'36', N'{}', N'0fddcd3b50a24c6795ec9034fdb44778', N'1262664024096133120', N'【身份认证服务】- 角色列表', N'/api/identity/roles/all', N'', N'', N'/api/identity/roles/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'37', N'{}', N'191e555219e845069dfd93793263a840', N'1262664186252120064', N'【身份认证服务】- 单个角色', N'/api/identity/roles/{id}', N'', N'', N'/api/identity/roles/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'38', N'{}', N'c316858e82f74e6ca6e923d6b3a3fa76', N'1262664357044178944', N'【身份认证服务】- 用户注册', N'/api/account/register', N'', N'', N'/api/account/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'39', N'{}', N'db53b6f957914a10a6a97ba306b1f6ef', N'1262664632928718848', N'【身份认证服务】- 单个用户', N'/api/identity/users/{id}', N'', N'', N'/api/identity/users/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'40', N'{}', N'1833434b8ce34f8ab791e7e950f4c61f', N'1262664751409418240', N'【身份认证服务】- 用户管理', N'/api/identity/users', N'', N'', N'/api/identity/users', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'41', N'{}', N'b3c963a1612144918bffaf272697498c', N'1262664871274237952', N'【身份认证服务】- 用户角色', N'/api/identity/users/{id}/roles', N'', N'', N'/api/identity/users/{id}/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'42', N'{}', N'33dd757b79cb4f52994af13bfb4f6783', N'1262665026111164416', N'【身份认证服务】- 通过用户名查询用户', N'/api/identity/users/by-username/{userName}', N'', N'', N'/api/identity/users/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'43', N'{}', N'e46fd6cb3a104da3aadfe0149fe4de68', N'1262665159905267712', N'【身份认证服务】- 通过邮件查询用户', N'/api/identity/users/by-email/{email}', N'', N'', N'/api/identity/users/by-email/{email}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'44', N'{}', N'8c8ec5ad6aaa4145981ee7ac876c36c9', N'1262665329829105664', N'【身份认证服务】- 通过标识查询用户', N'/api/identity/users/lookup/{id}', N'', N'', N'/api/identity/users/lookup/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'45', N'{}', N'f5c0c8c02c0846fdbe5015cd86f3d81b', N'1262665456471920640', N'【身份认证服务】- 通过名称查询用户', N'/api/identity/users/lookup/by-username/{userName}', N'', N'', N'/api/identity/users/lookup/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'46', N'{}', N'ecf0ea4a3e3c4b2e8fa3621514d00c74', N'1262665628165754880', N'【基础服务】- 通过名称查询租户', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'47', N'{}', N'69132bc515b64005af4292ce0dee5626', N'1262666172682883072', N'【基础服务】- 通过标识查询租户', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'49', N'{}', N'b8d2dd9d366540dd95f91023b626472f', N'1262723402331885568', N'【身份认证服务】- 已有的跨域资源', N'/api/identity-server/clients/distinct-cors-origins', N'', N'', N'/api/identity-server/clients/distinct-cors-origins', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'50', N'{}', N'f333d028839d4fc2aafa8509e674d7dd', N'1262935771746734080', N'【身份认证服务】- 身份资源', N'/api/identity-server/identity-resources', N'', N'', N'/api/identity-server/identity-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'51', N'{}', N'dffd1bfaca5b4c1890221678f2b16cd5', N'1262935906522304512', N'【身份认证服务】- 身份资源管理', N'/api/identity-server/identity-resources/{id}', N'', N'', N'/api/identity-server/identity-resources/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'54', N'{}', N'7b847d8434bc4d1db07fa8961d90c14a', N'1263074419073593344', N'【服务网关管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/apigateway/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'55', N'{}', N'ca2cedfa620045a9adef0be2f958c4bc', N'1263075249394790400', N'【服务网关管理】- 查询聚合路由', N'/api/ApiGateway/Aggregates/{RouteId}', N'', N'', N'/api/ApiGateway/Aggregates/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'57', N'{}', N'98fbc99fc8644946ac0a72cc3dc5fd1f', N'1263075593499684864', N'【服务网关管理】- 聚合路由配置', N'/api/ApiGateway/Aggregates/RouteConfig', N'', N'', N'/api/ApiGateway/Aggregates/RouteConfig', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'59', N'{}', N'c692b30c72d4424eb4740ac49f4e9373', N'1263101898440146944', N'【服务网关管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/apigateway/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'60', N'{}', N'8409117162504f71aa66982f05c38a80', N'1263303878648569856', N'【平台服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/platform/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'61', N'{}', N'9f520820071b4e14bc94ab57989cea1f', N'1263304204797648896', N'【平台服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/platform/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'62', N'{}', N'530ab314560f41678b40f48da9383d51', N'1263304872891555840', N'【后台管理】- 租户管理', N'/api/tenant-management/tenants', N'', N'', N'/api/tenant-management/tenants', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'63', N'{}', N'21334c6da4c349cc883c38c13de0e754', N'1263305106250047488', N'【后台管理】- 特定租户管理', N'/api/tenant-management/tenants/{id}', N'', N'', N'/api/tenant-management/tenants/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'64', N'{}', N'cc8fdf1b2d0b414ebf2dc51a6dc78305', N'1263305244594970624', N'【后台管理】- 租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'2', N'30000', N'1', N'', N'TEST-APP'), (N'65', N'{}', N'aaf285ed10da4024ba561d5cf8c6322b', N'1263305430536855552', N'【后台管理】- 特定租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string/{name}', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation/{name}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'66', N'{}', N'b6ec80673b354c239def3bdce31b4cc0', N'1263639172959174656', N'【后台管理】- 全局设置', N'/api/setting-management/settings/by-global', N'', N'', N'/api/setting-management/settings/by-global', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'67', N'{}', N'755b4dce5c34444785fa3b647fef4131', N'1264799968944640000', N'【身份认证服务】- 验证手机号', N'/api/account/phone/verify', N'', N'', N'/api/account/phone/verify', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'68', N'{}', N'535191c570ae453ab320012304d7a62c', N'1264800070161584128', N'【身份认证服务】- 手机号注册', N'/api/account/phone/register', N'', N'', N'/api/account/phone/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'69', N'{}', N'723c9b111f9f4a1aa804118cdde193d3', N'1267360794414161920', N'【消息服务】- 通知', N'/signalr-hubs/notifications/{everything}', N'', N'', N'/signalr-hubs/notifications/{everything}', N'POST,GET,OPTIONS,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'70', N'{}', N'f3aa2b42dd9f468aa5aae4ef64754427', N'1267383367629807616', N'【消息服务】- 通知0', N'/signalr-hubs/notifications', N'', N'', N'/signalr-hubs/notifications', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'71', N'{}', N'99dc8259c50044008c8aede7442ddde3', N'1267817055527632896', N'【消息服务】- 聊天', N'/signalr-hubs/message', N'', N'', N'/signalr-hubs/message', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'72', N'{}', N'4ec40b72d469474ba10ae02e8d3298bb', N'1267817221286526976', N'【消息服务】- 聊天1', N'/signalr-hubs/message/{everything}', N'', N'', N'/signalr-hubs/message/{everything}', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'73', N'{}', N'cfb5f09a12bf495fbcaf2fa5d9123a40', N'1268893687085518848', N'【身份认证服务】- 重置密码', N'/api/account/phone/reset-password', N'', N'', N'/api/account/phone/reset-password', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'101', N'{}', N'997a4c27a433458aafed9b8aa252d957', N'1288657613998579712', N'【身份认证服务】- 组织机构列表', N'/api/identity/organization-units', N'', N'', N'/api/identity/organization-units', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'102', N'{}', N'a2c6acc9882a425ab26bd3ad5a9c17c6', N'1288657941770854400', N'【身份认证服务】- 组织机构管理', N'/api/identity/organization-units/{id}', N'', N'', N'/api/identity/organization-units/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'103', N'{}', N'390acfb0e16943c6b61e731d47c282e9', N'1288658134067109888', N'【身份认证服务】- 组织机构移动', N'/api/identity/organization-units/{id}/move', N'', N'', N'/api/identity/organization-units/{id}/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'104', N'{}', N'3515e75becf9447492ad60466b27c397', N'1288658305156964352', N'【身份认证服务】- 查询组织机构子级', N'/api/identity/organization-units/find-children', N'', N'', N'/api/identity/organization-units/find-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'105', N'{}', N'aab0a24d930f4f9687497e5ccaac2a31', N'1288658491216289792', N'【身份认证服务】- 查询组织机构最后一个子节点', N'/api/identity/organization-units/last-children', N'', N'', N'/api/identity/organization-units/last-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'106', N'{}', N'edf67e297c6d494baf3ea66465418faf', N'1288658638302142464', N'【身份认证服务】- 组织机构角色管理', N'/api/identity/organization-units/management-roles', N'', N'', N'/api/identity/organization-units/management-roles', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'107', N'{}', N'21bcb13e71c648a98861ce9b6fb3e7b0', N'1288658791784308736', N'【身份认证服务】- 组织机构用户管理', N'/api/identity/organization-units/management-users', N'', N'', N'/api/identity/organization-units/management-users', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'108', N'{}', N'1982bc6ffd92445b9b3f47067378d1fc', N'1290849478956199936', N'【后台管理】- 当前租户设置', N'/api/setting-management/settings/by-current-tenant', N'', N'', N'/api/setting-management/settings/by-current-tenant', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'109', N'{}', N'a7df3a04805d4cc8a6e6b3823c6dd468', N'1290849628051124224', N'【后台管理】- 用户设置', N'/api/setting-management/settings/by-user/{userId}', N'', N'', N'/api/setting-management/settings/by-user/{userId}', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'110', N'{}', N'ef6e38a529a345fab67f6a627cf20635', N'1290849798553776128', N'【后台管理】- 当前用户设置', N'/api/setting-management/settings/by-current-user', N'', N'', N'/api/setting-management/settings/by-current-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'112', N'{}', N'9844fed6507844f2ac64bd08649bd3a6', N'1291259822512693248', N'【身份认证服务】- 查询组织机构根节点', N'/api/identity/organization-units/root-node', N'', N'', N'/api/identity/organization-units/root-node', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'113', N'{}', N'24d8794cf8f943b4ac45d2bcccf7c128', N'1292620505149145088', N'【平台服务】- 文件系统', N'/api/file-management/file-system', N'', N'', N'/api/file-management/file-system', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'114', N'{}', N'0acf6762d3af43efb655107e0039f5fc', N'1292620665505775616', N'【平台服务】- 文件系统 - 目录管理', N'/api/file-management/file-system/folders', N'', N'', N'/api/file-management/file-system/folders', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'115', N'{}', N'8b4363f70865419089b5f62ba35382df', N'1292620843398791168', N'【平台服务】- 文件系统 - 文件管理', N'/api/file-management/file-system/files', N'', N'', N'/api/file-management/file-system/files', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'1200000', N'1', N'', N'TEST-APP'), (N'116', N'{}', N'7eb315567bbc470bbbfd26923c5d0aba', N'1292621027574874112', N'【平台服务】- 文件系统 - 复制目录', N'/api/file-management/file-system/folders/copy', N'', N'', N'/api/file-management/file-system/folders/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'117', N'{}', N'af5853680cff454fa66ff6022f18da23', N'1292621363161137152', N'【平台服务】- 文件系统 - 移动目录', N'/api/file-management/file-system/folders/move', N'', N'', N'/api/file-management/file-system/folders/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'118', N'{}', N'6daa6d8c8adb466899988fd8181c29a8', N'1292621494837116928', N'【平台服务】- 文件系统 - 复制文件', N'/api/file-management/file-system/files/copy', N'', N'', N'/api/file-management/file-system/files/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'119', N'{}', N'9560caaa3bd9424984c44724aa54bfe9', N'1292621629260365824', N'【平台服务】- 文件系统 - 移动文件', N'/api/file-management/file-system/files/move', N'', N'', N'/api/file-management/file-system/files/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'120', N'{}', N'fc2aaa6035484201b9014912930fb7cb', N'1292622526073864192', N'【平台服务】- 文件系统 - 详情页', N'/api/file-management/file-system/profile', N'', N'', N'/api/file-management/file-system/profile', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'121', N'{}', N'c6c7b027000942dda8ba0d2e2d8cf705', N'1293470838745821184', N'【后台管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/backend-admin/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'122', N'{}', N'becd4342079d4399abda5b5ba3b46fdc', N'1293471661785706496', N'【消息服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/messages/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'123', N'{}', N'c828140cee3043c18ffc274f6461f0f2', N'1293472678392721408', N'【后台管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/backend-admin/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'124', N'{}', N'e683cff8066d4c2899a17d0f618f1a0b', N'1293472857510473728', N'【消息服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/messages/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'125', N'{}', N'0e9c3bff5b58428eba97a5516140ba5e', N'1299273336009359360', N'【消息服务】- Hangfire仪表板 ', N'/hangfire', N'', N'', N'/hangfire', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'126', N'{}', N'e906924ad3a947cf8e6956e2dd258192', N'1299273436282585088', N'【消息服务】- Hangfire仪表板 - 主页', N'/hangfire/', N'', N'', N'/hangfire/', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'127', N'{}', N'e02f2049efbc4ee1ad6629bd0341ed2b', N'1299273618470567936', N'【消息服务】- Hangfire仪表板 - 状态', N'/hangfire/stats', N'', N'', N'/hangfire/stats', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'128', N'{}', N'f8d2b2f0f1d649c2a07eeef23d6adb0e', N'1299273770182737920', N'【消息服务】- Hangfire仪表板 - 作业管理', N'/hangfire/jobs/{everything}', N'', N'', N'/hangfire/jobs/{everything}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'129', N'{}', N'9785be7a29774b468e271b23009fe115', N'1299273978023084032', N'【消息服务】- Hangfire仪表板 - 重试', N'/hangfire/retries', N'', N'', N'/hangfire/retries', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'130', N'{}', N'9c0c1cd196bb45c0bc03fafb7a1eb8f2', N'1299274123225694208', N'【消息服务】- Hangfire仪表板 - 周期性作业', N'/hangfire/recurring', N'', N'', N'/hangfire/recurring', N'GET,POST,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'131', N'{}', N'243bafe828be463ea63a3e2b521f9923', N'1299274222299348992', N'【消息服务】- Hangfire仪表板 - 服务器列表', N'/hangfire/servers', N'', N'', N'/hangfire/servers', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'132', N'{}', N'57a8ac1b41bb434cad38fbde0e2ba2f0', N'1304238876758495232', N'【后台管理】- 管理功能', N'/api/feature-management/features', N'', N'', N'/api/feature-management/features', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'133', N'{}', N'40a150f629b047f587c91a9436a699c0', N'1304678610343383040', N'【身份认证服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/identity-server/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'134', N'{}', N'3a2d5d538fa44ac690402fc5c4e1a401', N'1304679169305694208', N'【身份认证服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/identity-server/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'135', N'{}', N'2ecfe7483bc94c28ad0769b654eb765d', N'1310460417141817344', N'【后台管理】- 审计日志列表', N'/api/auditing/audit-log', N'', N'', N'/api/auditing/audit-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'136', N'{}', N'744e340c0024462d88458b7ea9605b3c', N'1310502391475519488', N'【后台服务】- 安全日志列表', N'/api/auditing/security-log', N'', N'', N'/api/auditing/security-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'137', N'{}', N'a99639f4172547c4ba9b4f4ca5cb4ab9', N'1310515546943569920', N'【后台服务】- 安全日志', N'/api/auditing/security-log/{id}', N'', N'', N'/api/auditing/security-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'138', N'{}', N'c3ebc82d55f640fb9d70a911e97e4ec1', N'1310515735292985344', N'【后台管理】- 审计日志', N'/api/auditing/audit-log/{id}', N'', N'', N'/api/auditing/audit-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'139', N'{}', N'0379fcb3a9cd4b13b562b3b5b5c3eb7d', N'1316628769783480320', N'【身份认证服务】- 声明类型', N'/api/identity/claim-types', N'', N'', N'/api/identity/claim-types', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'140', N'{}', N'de25c9a80d994f728b37eb483b2f5127', N'1316628940663619584', N'【身份认证服务】- 管理声明类型', N'/api/identity/claim-types/{id}', N'', N'', N'/api/identity/claim-types/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'141', N'{}', N'25c19106baff4cf3a877ae8cd690a1b5', N'1316629112428756992', N'【身份认证服务】- 查询在用的声明类型列表', N'/api/identity/claim-types/actived-list', N'', N'', N'/api/identity/claim-types/actived-list', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'142', N'{}', N'd42f8b779cf344eeaa24df0ae37fb7cf', N'1316652047017246720', N'【身份认证服务】- 管理用户声明', N'/api/identity/users/claims/{id}', N'', N'', N'/api/identity/users/claims/{id}', N'POST,PUT,DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'143', N'{}', N'b86af44a34a14db4b482df8550f1bde1', N'1316913899996737536', N'【身份认证管理】- 管理角色声明', N'/api/identity/roles/claims/{id}', N'', N'', N'/api/identity/roles/claims/{id}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'144', N'{}', N'51a14bc295044de985ae014fbcc5bddf', N'1319200951383199744', N'【IdentityServer4】- 发现端点', N'/.well-known/openid-configuration', N'', N'', N'/.well-known/openid-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:44385,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP') GO COMMIT @@ -556,7 +556,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[appapigatewaysecurityoptions] VALUES (N'3', N'1261299170387169280', N'', N''), (N'4', N'1261585859064872960', N'', N''), (N'5', N'1261586605810368512', N'', N''), (N'6', N'1261587558609436672', N'', N''), (N'7', N'1261588213298348032', N'', N''), (N'8', N'1261588367619375104', N'', N''), (N'9', N'1261588628450557952', N'', N''), (N'10', N'1261588881564221440', N'', N''), (N'11', N'1261588983053795328', N'', N''), (N'12', N'1261589139039961088', N'', N''), (N'13', N'1261589197483393024', N'', N''), (N'14', N'1261589278857084928', N'', N''), (N'15', N'1261589420356124672', N'', N''), (N'16', N'1261589960393736192', N'', N''), (N'17', N'1261606600242085888', N'', N''), (N'18', N'1261606689601732608', N'', N''), (N'21', N'1262220447629058048', N'', N''), (N'22', N'1262230734939758592', N'', N''), (N'23', N'1262296916350869504', N'', N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'26', N'1262632904575045632', N'', N''), (N'27', N'1262632976616411136', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'50', N'1262936009924481024', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'127.0.0.1', N''), (N'119', N'1299273436282585088', N'127.0.0.1', N''), (N'120', N'1299273618470567936', N'127.0.0.1', N''), (N'121', N'1299273770182737920', N'127.0.0.1', N''), (N'122', N'1299273978023084032', N'127.0.0.1', N''), (N'123', N'1299274123225694208', N'127.0.0.1', N''), (N'124', N'1299274222299348992', N'127.0.0.1', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N'') +INSERT INTO [apigateway].[appapigatewaysecurityoptions] VALUES (N'3', N'1261299170387169280', N'', N''), (N'4', N'1261585859064872960', N'', N''), (N'5', N'1261586605810368512', N'', N''), (N'6', N'1261587558609436672', N'', N''), (N'7', N'1261588213298348032', N'', N''), (N'8', N'1261588367619375104', N'', N''), (N'9', N'1261588628450557952', N'', N''), (N'10', N'1261588881564221440', N'', N''), (N'11', N'1261588983053795328', N'', N''), (N'12', N'1261589139039961088', N'', N''), (N'13', N'1261589197483393024', N'', N''), (N'14', N'1261589278857084928', N'', N''), (N'15', N'1261589420356124672', N'', N''), (N'16', N'1261589960393736192', N'', N''), (N'17', N'1261606600242085888', N'', N''), (N'18', N'1261606689601732608', N'', N''), (N'21', N'1262220447629058048', N'', N''), (N'22', N'1262230734939758592', N'', N''), (N'23', N'1262296916350869504', N'', N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'127.0.0.1', N''), (N'119', N'1299273436282585088', N'127.0.0.1', N''), (N'120', N'1299273618470567936', N'127.0.0.1', N''), (N'121', N'1299273770182737920', N'127.0.0.1', N''), (N'122', N'1299273978023084032', N'127.0.0.1', N''), (N'123', N'1299274123225694208', N'127.0.0.1', N''), (N'124', N'1299274222299348992', N'127.0.0.1', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N'') GO COMMIT @@ -589,7 +589,7 @@ GO BEGIN TRANSACTION GO -INSERT INTO [apigateway].[cap.published] VALUES (N'1316628771217932288', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1316628771217932288","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/15 14:35:35 +08:00","cap-corr-id":"1316628771217932288","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-15T14:35:35.4925577+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-15 14:35:36', N'2020-10-16 14:35:36', N'Succeeded'), (N'1316628940789448704', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1316628940789448704","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/15 14:36:15 +08:00","cap-corr-id":"1316628940789448704","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-15T14:36:15.9244062+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-15 14:36:16', N'2020-10-16 14:36:16', N'Succeeded'), (N'1316629112500060160', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1316629112500060160","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/15 14:36:56 +08:00","cap-corr-id":"1316629112500060160","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-15T14:36:56.8629946+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-15 14:36:57', N'2020-10-16 14:36:57', N'Succeeded'), (N'1316652047117910016', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1316652047117910016","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/15 16:08:04 +08:00","cap-corr-id":"1316652047117910016","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-15T16:08:04.901902+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-15 16:08:05', N'2020-10-16 16:08:05', N'Succeeded') +INSERT INTO [apigateway].[cap.published] VALUES (N'1316913901179531264', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1316913901179531264","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 9:28:35 +08:00","cap-corr-id":"1316913901179531264","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T09:28:35.7734416+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-16 09:28:36', N'2020-10-17 09:28:36', N'Succeeded'), (N'1317010396352376832', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317010396352376832","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 15:52:02 +08:00","cap-corr-id":"1317010396352376832","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T15:52:02.0169083+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-16 15:52:02', N'2020-10-17 15:52:02', N'Succeeded'), (N'1317010428531077120', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317010428531077120","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 15:52:09 +08:00","cap-corr-id":"1317010428531077120","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T15:52:09.6896583+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-16 15:52:10', N'2020-10-17 15:52:10', N'Succeeded'), (N'1317010521804009472', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317010521804009472","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 15:52:31 +08:00","cap-corr-id":"1317010521804009472","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T15:52:31.9268977+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-16 15:52:32', N'2020-10-17 15:52:32', N'Succeeded'), (N'1317010532486901760', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317010532486901760","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 15:52:34 +08:00","cap-corr-id":"1317010532486901760","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T15:52:34.474519+08:00","AppId":"TEST-APP","Method":"Delete","Object":"ReRoute"}}', N'0', N'2020-10-16 15:52:34', N'2020-10-17 15:52:34', N'Succeeded'), (N'1317010545040453632', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317010545040453632","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 15:52:37 +08:00","cap-corr-id":"1317010545040453632","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T15:52:37.4659098+08:00","AppId":"TEST-APP","Method":"Delete","Object":"ReRoute"}}', N'0', N'2020-10-16 15:52:37', N'2020-10-17 15:52:37', N'Succeeded'), (N'1317073463182389248', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317073463182389248","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 20:02:38 +08:00","cap-corr-id":"1317073463182389248","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T20:02:38.320969+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-16 20:02:38', N'2020-10-17 20:02:38', N'Succeeded'), (N'1317073573329006592', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1317073573329006592","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/16 20:03:04 +08:00","cap-corr-id":"1317073573329006592","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-16T20:03:04.5820788+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-16 20:03:05', N'2020-10-17 20:03:05', N'Succeeded'), (N'1319200204608344064', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200204608344064","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:53:32 +08:00","cap-corr-id":"1319200204608344064","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:53:32.9840134+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:53:33', N'2020-10-23 16:53:33', N'Succeeded'), (N'1319200280713990144', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200280713990144","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:53:51 +08:00","cap-corr-id":"1319200280713990144","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:53:51.1354824+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:53:51', N'2020-10-23 16:53:51', N'Succeeded'), (N'1319200384619483136', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200384619483136","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:54:15 +08:00","cap-corr-id":"1319200384619483136","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:54:15.9078421+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:54:16', N'2020-10-23 16:54:16', N'Succeeded'), (N'1319200560994160640', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200560994160640","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:54:57 +08:00","cap-corr-id":"1319200560994160640","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:54:57.9595375+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:54:58', N'2020-10-23 16:54:58', N'Succeeded'), (N'1319200657442181120', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200657442181120","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:55:20 +08:00","cap-corr-id":"1319200657442181120","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:55:20.9536617+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:55:21', N'2020-10-23 16:55:21', N'Succeeded'), (N'1319200806365138944', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200806365138944","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:55:56 +08:00","cap-corr-id":"1319200806365138944","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:55:56.4604217+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-10-22 16:55:56', N'2020-10-23 16:55:56', N'Succeeded'), (N'1319200951785852928', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1319200951785852928","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/10/22 16:56:31 +08:00","cap-corr-id":"1319200951785852928","cap-corr-seq":"0"},"Value":{"DateTime":"2020-10-22T16:56:31.1318192+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-10-22 16:56:31', N'2020-10-23 16:56:31', N'Succeeded') GO COMMIT diff --git a/aspnet-core/database/ApiGateway-Init.sql b/aspnet-core/database/ApiGateway-Init.sql index f7eaad2b8..854907008 100644 --- a/aspnet-core/database/ApiGateway-Init.sql +++ b/aspnet-core/database/ApiGateway-Init.sql @@ -1,5 +1,5 @@ /* - Navicat MySQL Data Transfer + Navicat Premium Data Transfer Source Server : 本机服务器 Source Server Type : MySQL @@ -11,7 +11,7 @@ Target Server Version : 80020 File Encoding : 65001 - Date: 15/10/2020 21:36:21 + Date: 22/10/2020 17:33:42 */ SET NAMES utf8mb4; @@ -90,7 +90,7 @@ CREATE TABLE `appapigatewayauthoptions` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewayAuthOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayAuthOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 136 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayauthoptions @@ -116,8 +116,6 @@ INSERT INTO `appapigatewayauthoptions` VALUES (22, 1262230734939758592, NULL, '' INSERT INTO `appapigatewayauthoptions` VALUES (23, 1262296916350869504, NULL, ''); INSERT INTO `appapigatewayauthoptions` VALUES (24, 1262632376348594176, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (25, 1262632791869902848, '', ''); -INSERT INTO `appapigatewayauthoptions` VALUES (26, 1262632904575045632, '', ''); -INSERT INTO `appapigatewayauthoptions` VALUES (27, 1262632976616411136, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (28, 1262660336921235456, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (29, 1262660528277966848, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (30, 1262660706875625472, '', ''); @@ -139,7 +137,6 @@ INSERT INTO `appapigatewayauthoptions` VALUES (45, 1262666172682883072, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (47, 1262723402331885568, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (48, 1262935771746734080, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (49, 1262935906522304512, '', ''); -INSERT INTO `appapigatewayauthoptions` VALUES (50, 1262936009924481024, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (52, 1263074419073593344, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (53, 1263075249394790400, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (54, 1263075593499684864, '', ''); @@ -199,6 +196,8 @@ INSERT INTO `appapigatewayauthoptions` VALUES (132, 1316628769783480320, '', '') INSERT INTO `appapigatewayauthoptions` VALUES (133, 1316628940663619584, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (134, 1316629112428756992, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (135, 1316652047017246720, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (136, 1316913899996737536, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (137, 1319200951383199744, '', ''); -- ---------------------------- -- Table structure for appapigatewaybalanceroptions @@ -216,7 +215,7 @@ CREATE TABLE `appapigatewaybalanceroptions` ( UNIQUE INDEX `IX_AppApiGatewayBalancerOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayBalancerOptions_AppApiGatewayGlobalConfiguratio~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT `FK_AppApiGatewayBalancerOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 141 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaybalanceroptions @@ -243,8 +242,6 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (23, NULL, 1262230734939758592 INSERT INTO `appapigatewaybalanceroptions` VALUES (24, NULL, 1262296916350869504, NULL, NULL, NULL); INSERT INTO `appapigatewaybalanceroptions` VALUES (25, NULL, 1262632376348594176, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (26, NULL, 1262632791869902848, '', '', 0); -INSERT INTO `appapigatewaybalanceroptions` VALUES (27, NULL, 1262632904575045632, '', '', 0); -INSERT INTO `appapigatewaybalanceroptions` VALUES (28, NULL, 1262632976616411136, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (29, NULL, 1262660336921235456, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (30, NULL, 1262660528277966848, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (31, NULL, 1262660706875625472, '', '', 0); @@ -266,7 +263,6 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (46, NULL, 1262666172682883072 INSERT INTO `appapigatewaybalanceroptions` VALUES (48, NULL, 1262723402331885568, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (49, NULL, 1262935771746734080, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (50, NULL, 1262935906522304512, '', '', 0); -INSERT INTO `appapigatewaybalanceroptions` VALUES (51, NULL, 1262936009924481024, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (53, NULL, 1263074419073593344, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (54, NULL, 1263075249394790400, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (55, NULL, 1263075593499684864, '', '', 0); @@ -326,6 +322,8 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (135, NULL, 131662876978348032 INSERT INTO `appapigatewaybalanceroptions` VALUES (136, NULL, 1316628940663619584, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (137, NULL, 1316629112428756992, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (138, NULL, 1316652047017246720, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (139, NULL, 1316913899996737536, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (140, NULL, 1319200951383199744, '', '', 0); -- ---------------------------- -- Table structure for appapigatewaycacheoptions @@ -339,7 +337,7 @@ CREATE TABLE `appapigatewaycacheoptions` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewayCacheOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayCacheOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 136 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaycacheoptions @@ -363,10 +361,8 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (18, 1261606689601732608, NULL, N INSERT INTO `appapigatewaycacheoptions` VALUES (21, 1262220447629058048, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (22, 1262230734939758592, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (23, 1262296916350869504, NULL, NULL); -INSERT INTO `appapigatewaycacheoptions` VALUES (24, 1262632376348594176, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (24, 1262632376348594176, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (25, 1262632791869902848, NULL, NULL); -INSERT INTO `appapigatewaycacheoptions` VALUES (26, 1262632904575045632, NULL, NULL); -INSERT INTO `appapigatewaycacheoptions` VALUES (27, 1262632976616411136, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (28, 1262660336921235456, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (29, 1262660528277966848, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (30, 1262660706875625472, 0, ''); @@ -385,10 +381,9 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (42, 1262665329829105664, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (43, 1262665456471920640, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (44, 1262665628165754880, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (45, 1262666172682883072, NULL, NULL); -INSERT INTO `appapigatewaycacheoptions` VALUES (47, 1262723402331885568, 0, ''); -INSERT INTO `appapigatewaycacheoptions` VALUES (48, 1262935771746734080, 0, ''); -INSERT INTO `appapigatewaycacheoptions` VALUES (49, 1262935906522304512, 0, ''); -INSERT INTO `appapigatewaycacheoptions` VALUES (50, 1262936009924481024, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (47, 1262723402331885568, NULL, NULL); +INSERT INTO `appapigatewaycacheoptions` VALUES (48, 1262935771746734080, NULL, NULL); +INSERT INTO `appapigatewaycacheoptions` VALUES (49, 1262935906522304512, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (52, 1263074419073593344, NULL, NULL); INSERT INTO `appapigatewaycacheoptions` VALUES (53, 1263075249394790400, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (54, 1263075593499684864, 0, ''); @@ -448,6 +443,8 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (132, 1316628769783480320, 0, '') INSERT INTO `appapigatewaycacheoptions` VALUES (133, 1316628940663619584, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (134, 1316629112428756992, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (135, 1316652047017246720, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (136, 1316913899996737536, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (137, 1319200951383199744, 0, ''); -- ---------------------------- -- Table structure for appapigatewaydiscovery @@ -557,7 +554,7 @@ CREATE TABLE `appapigatewayhttpoptions` ( UNIQUE INDEX `IX_AppApiGatewayHttpOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayHttpOptions_AppApiGatewayGlobalConfiguration_It~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT `FK_AppApiGatewayHttpOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 141 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayhttpoptions @@ -584,8 +581,6 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (23, NULL, 1262230734939758592, NU INSERT INTO `appapigatewayhttpoptions` VALUES (24, NULL, 1262296916350869504, NULL, 0, 0, 1, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (25, NULL, 1262632376348594176, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (26, NULL, 1262632791869902848, 0, 0, 0, 0, 0); -INSERT INTO `appapigatewayhttpoptions` VALUES (27, NULL, 1262632904575045632, 0, 0, 0, 0, 0); -INSERT INTO `appapigatewayhttpoptions` VALUES (28, NULL, 1262632976616411136, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (29, NULL, 1262660336921235456, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (30, NULL, 1262660528277966848, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (31, NULL, 1262660706875625472, 0, 0, 0, 0, 0); @@ -607,7 +602,6 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (46, NULL, 1262666172682883072, 0, INSERT INTO `appapigatewayhttpoptions` VALUES (48, NULL, 1262723402331885568, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (49, NULL, 1262935771746734080, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (50, NULL, 1262935906522304512, 0, 0, 0, 0, 0); -INSERT INTO `appapigatewayhttpoptions` VALUES (51, NULL, 1262936009924481024, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (53, NULL, 1263074419073593344, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (54, NULL, 1263075249394790400, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (55, NULL, 1263075593499684864, 0, 0, 0, 0, 0); @@ -667,6 +661,8 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (135, NULL, 1316628769783480320, 0 INSERT INTO `appapigatewayhttpoptions` VALUES (136, NULL, 1316628940663619584, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (137, NULL, 1316629112428756992, 0, 0, 0, 0, 0); INSERT INTO `appapigatewayhttpoptions` VALUES (138, NULL, 1316652047017246720, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (139, NULL, 1316913899996737536, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (140, NULL, 1319200951383199744, 0, 0, 0, 0, 0); -- ---------------------------- -- Table structure for appapigatewayqosoptions @@ -684,7 +680,7 @@ CREATE TABLE `appapigatewayqosoptions` ( UNIQUE INDEX `IX_AppApiGatewayQoSOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayQoSOptions_AppApiGatewayGlobalConfiguration_Ite~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT `FK_AppApiGatewayQoSOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 141 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayqosoptions @@ -711,8 +707,6 @@ INSERT INTO `appapigatewayqosoptions` VALUES (23, NULL, 1262230734939758592, 60, INSERT INTO `appapigatewayqosoptions` VALUES (24, NULL, 1262296916350869504, 60, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (25, NULL, 1262632376348594176, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (26, NULL, 1262632791869902848, 50, 60000, 30000); -INSERT INTO `appapigatewayqosoptions` VALUES (27, NULL, 1262632904575045632, 50, 60000, 30000); -INSERT INTO `appapigatewayqosoptions` VALUES (28, NULL, 1262632976616411136, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (29, NULL, 1262660336921235456, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (30, NULL, 1262660528277966848, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (31, NULL, 1262660706875625472, 50, 60000, 30000); @@ -734,7 +728,6 @@ INSERT INTO `appapigatewayqosoptions` VALUES (46, NULL, 1262666172682883072, 50, INSERT INTO `appapigatewayqosoptions` VALUES (48, NULL, 1262723402331885568, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (49, NULL, 1262935771746734080, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (50, NULL, 1262935906522304512, 50, 60000, 30000); -INSERT INTO `appapigatewayqosoptions` VALUES (51, NULL, 1262936009924481024, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (53, NULL, 1263074419073593344, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (54, NULL, 1263075249394790400, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (55, NULL, 1263075593499684864, 50, 60000, 30000); @@ -794,6 +787,8 @@ INSERT INTO `appapigatewayqosoptions` VALUES (135, NULL, 1316628769783480320, 50 INSERT INTO `appapigatewayqosoptions` VALUES (136, NULL, 1316628940663619584, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (137, NULL, 1316629112428756992, 50, 60000, 30000); INSERT INTO `appapigatewayqosoptions` VALUES (138, NULL, 1316652047017246720, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (139, NULL, 1316913899996737536, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (140, NULL, 1319200951383199744, 50, 60000, 30000); -- ---------------------------- -- Table structure for appapigatewayratelimitoptions @@ -835,7 +830,7 @@ CREATE TABLE `appapigatewayratelimitrule` ( UNIQUE INDEX `IX_AppApiGatewayRateLimitRule_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayRateLimitRule_AppApiGatewayDynamicReRoute_Dynam~` FOREIGN KEY (`DynamicReRouteId`) REFERENCES `appapigatewaydynamicreroute` (`DynamicReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT `FK_AppApiGatewayRateLimitRule_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 136 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayratelimitrule @@ -861,8 +856,6 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (22, 1262230734939758592, NULL, INSERT INTO `appapigatewayratelimitrule` VALUES (23, 1262296916350869504, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (24, 1262632376348594176, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (25, 1262632791869902848, NULL, '', 0, NULL, NULL, NULL); -INSERT INTO `appapigatewayratelimitrule` VALUES (26, 1262632904575045632, NULL, '', 0, NULL, NULL, NULL); -INSERT INTO `appapigatewayratelimitrule` VALUES (27, 1262632976616411136, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (28, 1262660336921235456, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (29, 1262660528277966848, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (30, 1262660706875625472, NULL, '', 0, NULL, NULL, NULL); @@ -884,7 +877,6 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (45, 1262666172682883072, NULL, INSERT INTO `appapigatewayratelimitrule` VALUES (47, 1262723402331885568, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (48, 1262935771746734080, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (49, 1262935906522304512, NULL, '', 0, NULL, NULL, NULL); -INSERT INTO `appapigatewayratelimitrule` VALUES (50, 1262936009924481024, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (52, 1263074419073593344, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (53, 1263075249394790400, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (54, 1263075593499684864, NULL, '', 0, NULL, NULL, NULL); @@ -944,6 +936,8 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (132, 1316628769783480320, NULL, INSERT INTO `appapigatewayratelimitrule` VALUES (133, 1316628940663619584, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (134, 1316629112428756992, NULL, '', 0, NULL, NULL, NULL); INSERT INTO `appapigatewayratelimitrule` VALUES (135, 1316652047017246720, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (136, 1316913899996737536, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (137, 1319200951383199744, NULL, '', 0, NULL, NULL, NULL); -- ---------------------------- -- Table structure for appapigatewayreroute @@ -983,14 +977,14 @@ CREATE TABLE `appapigatewayreroute` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `AK_AppApiGatewayReRoute_ReRouteId`(`ReRouteId`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewayReRoute_AppId_DownstreamPathTemplate_UpstreamPa~`(`AppId`, `DownstreamPathTemplate`, `UpstreamPathTemplate`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 143 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 145 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayreroute -- ---------------------------- INSERT INTO `appapigatewayreroute` VALUES (4, '{}', '84059fcecc91498b9beafac914865e2c', 1261299170387169280, '【后台管理】- 权限管理', '/api/permission-management/permissions', '', NULL, '/api/permission-management/permissions', 'GET,PUT,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30010,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (5, '{}', 'f168778a390d49d69d728ebd72b230ef', 1261585859064872960, '【身份认证服务】- 客户端管理', '/api/IdentityServer/Clients', '', NULL, '/api/IdentityServer/Clients', 'POST,GET,PUT,', '', '', 'X-Forwarded-For:{RemoteIpAddress},', '', '', '', NULL, 1, '', NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (6, '{}', 'd91d31c630dc4e4bae0fef8c3aa60427', 1261586605810368512, '【身份认证服务】- 查询客户端', '/api/IdentityServer/Clients/{Id}', '', NULL, '/api/IdentityServer/Clients/{Id}', 'GET,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (5, '{}', 'f2312eed73cc4d3cbefcd1816849fd74', 1261585859064872960, '【身份认证服务】- 客户端', '/api/identity-server/clients', '', NULL, '/api/identity-server/clients', 'POST,GET,', '', '', 'X-Forwarded-For:{RemoteIpAddress},', '', '', '', NULL, 1, '', NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (6, '{}', 'b764ec7b994147abb12974bfcee4a0a9', 1261586605810368512, '【身份认证服务】- 管理客户端', '/api/identity-server/clients/{Id}', '', NULL, '/api/identity-server/clients/{Id}', 'GET,DELETE,PUT,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (7, '{}', 'b4ce189320804dc6b87e602594e93d35', 1261587558609436672, '【服务网关管理】- 路由组管理', '/api/ApiGateway/RouteGroups', '', '', '/api/ApiGateway/RouteGroups', 'GET,POST,PUT,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, '', NULL, 30000, 1, NULL, 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (8, '{}', '8736fefa36da4b129f3fcf6aa095f2ce', 1261588213298348032, '【服务网关管理】- 查询单个路由组', '/api/ApiGateway/RouteGroups/By-AppId/{AppId}', '', '', '/api/ApiGateway/RouteGroups/By-AppId/{AppId}', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, '', NULL, 30000, 1, NULL, 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (9, '{}', 'befd14ad39e244bc9dea7e0c01e642ce', 1261588367619375104, '【服务网关管理】- 查询所有有效路由组', '/api/ApiGateway/RouteGroups/Actived', '', '', '/api/ApiGateway/RouteGroups/Actived', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, '', NULL, 30000, 1, NULL, 'TEST-APP'); @@ -1004,13 +998,11 @@ INSERT INTO `appapigatewayreroute` VALUES (16, '{}', '00d0a12f403a4a919c99c534bd INSERT INTO `appapigatewayreroute` VALUES (17, '{}', '8c308f1386ad49c799cd281eb95170ac', 1261589960393736192, '【服务网关管理】- 通过应用标识查询动态路由', '/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', '', NULL, '/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (18, '{}', 'e659ebbf61534a978335cfeabdc0b375', 1261606600242085888, '【服务网关管理】- 通过应用标识查询聚合路由', '/api/ApiGateway/Aggregates/by-AppId/{AppId}', '', NULL, '/api/ApiGateway/Aggregates/by-AppId/{AppId}', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (19, '{}', 'd665e4491b81413385858601d9cf9a1d', 1261606689601732608, '【服务网关管理】- 聚合路由', '/api/ApiGateway/Aggregates', '', NULL, '/api/ApiGateway/Aggregates', 'GET,POST,PUT,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30001,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (22, '{}', '47c55e759d824450a987a705fd08387c', 1262220447629058048, '【身份认证服务】- 客户端密钥', '/api/IdentityServer/Clients/Secrets', '', NULL, '/api/IdentityServer/Clients/Secrets', 'PUT,POST,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (23, '{}', '4da82cbff6ab48e185100526eaed22df', 1262230734939758592, '【身份认证服务】- 客户端声明', '/api/IdentityServer/Clients/Claims', '', NULL, '/api/IdentityServer/Clients/Claims', 'PUT,POST,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (25, '{}', 'b6009df9b18c44b3aa2b77f27b0c2abb', 1262296916350869504, '【身份认证服务】- 客户端属性', '/api/IdentityServer/Clients/Properties', '', NULL, '/api/IdentityServer/Clients/Properties', 'PUT,POST,DELETE,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (26, '{}', '401a7a8e8a2f41c599b1b87b55249a32', 1262632376348594176, '【身份认证服务】- Api资源管理', '/api/IdentityServer/ApiResources', '', '', '/api/IdentityServer/ApiResources', 'GET,POST,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (27, '{}', 'c662a4c29e654f9da6eb73ee456b533a', 1262632791869902848, '【身份认证服务】- 单个Api资源', '/api/IdentityServer/ApiResources/{Id}', '', '', '/api/IdentityServer/ApiResources/{Id}', 'GET,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (28, '{}', 'a0c2bdfdd0de4832b63d6dc3696c9c26', 1262632904575045632, '【身份认证服务】- Api资源密钥', '/api/IdentityServer/ApiResources/Secrets', '', '', '/api/IdentityServer/ApiResources/Secrets', 'DELETE,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (29, '{}', 'fb0e7ca974f243ce9f4034b39bdda326', 1262632976616411136, '【身份认证服务】- Api资源作用域', '/api/IdentityServer/ApiResources/Scopes', '', '', '/api/IdentityServer/ApiResources/Scopes', 'DELETE,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (22, '{}', '2aad614e2c2a497593a4784ff639c3d9', 1262220447629058048, '【身份认证服务】- 克隆客户端', '/api/identity-server/clients/{id}/clone', '', NULL, '/api/identity-server/clients/{id}/clone', 'POST,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (23, '{}', '892101e2e4e34bcfab42cdb5c4452643', 1262230734939758592, '【身份认证服务】- 可用的Api资源', '/api/identity-server/clients/assignable-api-resources', '', NULL, '/api/identity-server/clients/assignable-api-resources', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (25, '{}', '38833181fe6b4ab0a0baf21ea22edb94', 1262296916350869504, '【身份认证服务】- 可用的身份资源', '/api/identity-server/clients/assignable-identity-resources', '', NULL, '/api/identity-server/clients/assignable-identity-resources', 'GET,', '', '', '', '', '', '', NULL, 1, NULL, NULL, 'HTTP', '127.0.0.1:30015,', '', NULL, NULL, NULL, 30000, 1, NULL, 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (26, '{}', '3fccd1318d0d47d9aef85542668829a6', 1262632376348594176, '【身份认证服务】- Api资源', '/api/identity-server/api-resources', '', '', '/api/identity-server/api-resources', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (27, '{}', 'de6bd0ddea6d4019b4855be5442fafdc', 1262632791869902848, '【身份认证服务】- 管理Api资源', '/api/identity-server/api-resources/{id}', '', '', '/api/identity-server/api-resources/{id}', 'GET,DELETE,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (30, '{}', '0f9875697b74420c9dc2eaf77099b210', 1262660336921235456, '【身份认证服务】- 用户登录', '/api/account/login', '', '', '/api/account/login', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (31, '{}', 'a890c6ecc6a64c9fa313a0f6b5406e1c', 1262660528277966848, '【身份认证服务】- 用户登出', '/api/account/logout', '', '', '/api/account/logout', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (32, '{}', '88de580b6beb4d9d9d4367840ba1fcea', 1262660706875625472, '【身份认证服务】- 检查密码', '/api/account/checkPassword', '', '', '/api/account/checkPassword', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); @@ -1029,10 +1021,9 @@ INSERT INTO `appapigatewayreroute` VALUES (44, '{}', '8c8ec5ad6aaa4145981ee7ac87 INSERT INTO `appapigatewayreroute` VALUES (45, '{}', 'f5c0c8c02c0846fdbe5015cd86f3d81b', 1262665456471920640, '【身份认证服务】- 通过名称查询用户', '/api/identity/users/lookup/by-username/{userName}', '', '', '/api/identity/users/lookup/by-username/{userName}', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (46, '{}', 'ecf0ea4a3e3c4b2e8fa3621514d00c74', 1262665628165754880, '【基础服务】- 通过名称查询租户', '/api/abp/multi-tenancy/tenants/by-name/{name}', '', '', '/api/abp/multi-tenancy/tenants/by-name/{name}', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (47, '{}', '69132bc515b64005af4292ce0dee5626', 1262666172682883072, '【基础服务】- 通过标识查询租户', '/api/abp/multi-tenancy/tenants/by-id/{id}', '', '', '/api/abp/multi-tenancy/tenants/by-id/{id}', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (49, '{}', '4114a097b9e04a9e90458edf02ef41c7', 1262723402331885568, '【身份认证服务】- 克隆客户端', '/api/IdentityServer/Clients/Clone', '', '', '/api/IdentityServer/Clients/Clone', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (50, '{}', '2a9cc98d3ed0462d98c4bf0e946f410d', 1262935771746734080, '【身份认证服务】- 身份资源管理', '/api/IdentityServer/IdentityResources', '', '', '/api/IdentityServer/IdentityResources', 'GET,POST,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (51, '{}', '4d36b0ea5b92473ea5de3e91ff155830', 1262935906522304512, '【身份认证服务】- 查询身份资源', '/api/IdentityServer/IdentityResources/{Id}', '', '', '/api/IdentityServer/IdentityResources/{Id}', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -INSERT INTO `appapigatewayreroute` VALUES (52, '{}', '387df08693e54e91ac055a2324d4c10e', 1262936009924481024, '【身份认证服务】- 身份资源属性', '/api/IdentityServer/IdentityResources/Properties', '', '', '/api/IdentityServer/IdentityResources/Properties', 'POST,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (49, '{}', 'b8d2dd9d366540dd95f91023b626472f', 1262723402331885568, '【身份认证服务】- 已有的跨域资源', '/api/identity-server/clients/distinct-cors-origins', '', '', '/api/identity-server/clients/distinct-cors-origins', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (50, '{}', 'f333d028839d4fc2aafa8509e674d7dd', 1262935771746734080, '【身份认证服务】- 身份资源', '/api/identity-server/identity-resources', '', '', '/api/identity-server/identity-resources', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (51, '{}', 'dffd1bfaca5b4c1890221678f2b16cd5', 1262935906522304512, '【身份认证服务】- 身份资源管理', '/api/identity-server/identity-resources/{id}', '', '', '/api/identity-server/identity-resources/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (54, '{}', '7b847d8434bc4d1db07fa8961d90c14a', 1263074419073593344, '【服务网关管理】- 接口代理', '/api/abp/api-definition', '', '', '/api/abp/apigateway/api-definition', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30001,', '', '', 'apigateway-api-definition', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (55, '{}', 'ca2cedfa620045a9adef0be2f958c4bc', 1263075249394790400, '【服务网关管理】- 查询聚合路由', '/api/ApiGateway/Aggregates/{RouteId}', '', '', '/api/ApiGateway/Aggregates/{RouteId}', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30001,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (57, '{}', '98fbc99fc8644946ac0a72cc3dc5fd1f', 1263075593499684864, '【服务网关管理】- 聚合路由配置', '/api/ApiGateway/Aggregates/RouteConfig', '', '', '/api/ApiGateway/Aggregates/RouteConfig', 'POST,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30001,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); @@ -1092,6 +1083,8 @@ INSERT INTO `appapigatewayreroute` VALUES (139, '{}', '0379fcb3a9cd4b13b562b3b5b INSERT INTO `appapigatewayreroute` VALUES (140, '{}', 'de25c9a80d994f728b37eb483b2f5127', 1316628940663619584, '【身份认证服务】- 管理声明类型', '/api/identity/claim-types/{id}', '', '', '/api/identity/claim-types/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (141, '{}', '25c19106baff4cf3a877ae8cd690a1b5', 1316629112428756992, '【身份认证服务】- 查询在用的声明类型列表', '/api/identity/claim-types/actived-list', '', '', '/api/identity/claim-types/actived-list', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); INSERT INTO `appapigatewayreroute` VALUES (142, '{}', 'd42f8b779cf344eeaa24df0ae37fb7cf', 1316652047017246720, '【身份认证服务】- 管理用户声明', '/api/identity/users/claims/{id}', '', '', '/api/identity/users/claims/{id}', 'POST,PUT,DELETE,GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (143, '{}', 'b86af44a34a14db4b482df8550f1bde1', 1316913899996737536, '【身份认证管理】- 管理角色声明', '/api/identity/roles/claims/{id}', '', '', '/api/identity/roles/claims/{id}', 'GET,POST,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (144, '{}', '51a14bc295044de985ae014fbcc5bddf', 1319200951383199744, '【IdentityServer4】- 发现端点', '/.well-known/openid-configuration', '', '', '/.well-known/openid-configuration', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:44385,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -- ---------------------------- -- Table structure for appapigatewayroutegroup @@ -1135,7 +1128,7 @@ CREATE TABLE `appapigatewaysecurityoptions` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewaySecurityOptions_ReRouteId`(`ReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewaySecurityOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 136 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaysecurityoptions @@ -1161,8 +1154,6 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (22, 1262230734939758592, '', INSERT INTO `appapigatewaysecurityoptions` VALUES (23, 1262296916350869504, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (24, 1262632376348594176, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (25, 1262632791869902848, '', ''); -INSERT INTO `appapigatewaysecurityoptions` VALUES (26, 1262632904575045632, '', ''); -INSERT INTO `appapigatewaysecurityoptions` VALUES (27, 1262632976616411136, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (28, 1262660336921235456, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (29, 1262660528277966848, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (30, 1262660706875625472, '', ''); @@ -1184,7 +1175,6 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (45, 1262666172682883072, '', INSERT INTO `appapigatewaysecurityoptions` VALUES (47, 1262723402331885568, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (48, 1262935771746734080, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (49, 1262935906522304512, '', ''); -INSERT INTO `appapigatewaysecurityoptions` VALUES (50, 1262936009924481024, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (52, 1263074419073593344, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (53, 1263075249394790400, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (54, 1263075593499684864, '', ''); @@ -1244,6 +1234,8 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (132, 1316628769783480320, '', INSERT INTO `appapigatewaysecurityoptions` VALUES (133, 1316628940663619584, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (134, 1316629112428756992, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (135, 1316652047017246720, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (136, 1316913899996737536, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (137, 1319200951383199744, '', ''); -- ---------------------------- -- Table structure for cap.published @@ -1265,10 +1257,21 @@ CREATE TABLE `cap.published` ( -- ---------------------------- -- Records of cap.published -- ---------------------------- -INSERT INTO `cap.published` VALUES (1316628771217932288, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1316628771217932288\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/15 14:35:35 +08:00\",\"cap-corr-id\":\"1316628771217932288\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-15T14:35:35.4925577+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-15 14:35:36', '2020-10-16 14:35:36', 'Succeeded'); -INSERT INTO `cap.published` VALUES (1316628940789448704, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1316628940789448704\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/15 14:36:15 +08:00\",\"cap-corr-id\":\"1316628940789448704\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-15T14:36:15.9244062+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-15 14:36:16', '2020-10-16 14:36:16', 'Succeeded'); -INSERT INTO `cap.published` VALUES (1316629112500060160, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1316629112500060160\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/15 14:36:56 +08:00\",\"cap-corr-id\":\"1316629112500060160\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-15T14:36:56.8629946+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-15 14:36:57', '2020-10-16 14:36:57', 'Succeeded'); -INSERT INTO `cap.published` VALUES (1316652047117910016, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1316652047117910016\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/15 16:08:04 +08:00\",\"cap-corr-id\":\"1316652047117910016\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-15T16:08:04.901902+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-15 16:08:05', '2020-10-16 16:08:05', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1316913901179531264, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1316913901179531264\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 9:28:35 +08:00\",\"cap-corr-id\":\"1316913901179531264\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T09:28:35.7734416+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 09:28:36', '2020-10-17 09:28:36', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317010396352376832, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317010396352376832\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 15:52:02 +08:00\",\"cap-corr-id\":\"1317010396352376832\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T15:52:02.0169083+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 15:52:02', '2020-10-17 15:52:02', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317010428531077120, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317010428531077120\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 15:52:09 +08:00\",\"cap-corr-id\":\"1317010428531077120\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T15:52:09.6896583+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 15:52:10', '2020-10-17 15:52:10', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317010521804009472, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317010521804009472\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 15:52:31 +08:00\",\"cap-corr-id\":\"1317010521804009472\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T15:52:31.9268977+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 15:52:32', '2020-10-17 15:52:32', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317010532486901760, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317010532486901760\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 15:52:34 +08:00\",\"cap-corr-id\":\"1317010532486901760\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T15:52:34.474519+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Delete\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 15:52:34', '2020-10-17 15:52:34', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317010545040453632, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317010545040453632\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 15:52:37 +08:00\",\"cap-corr-id\":\"1317010545040453632\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T15:52:37.4659098+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Delete\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 15:52:37', '2020-10-17 15:52:37', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317073463182389248, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317073463182389248\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 20:02:38 +08:00\",\"cap-corr-id\":\"1317073463182389248\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T20:02:38.320969+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 20:02:38', '2020-10-17 20:02:38', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1317073573329006592, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1317073573329006592\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/16 20:03:04 +08:00\",\"cap-corr-id\":\"1317073573329006592\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-16T20:03:04.5820788+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-16 20:03:05', '2020-10-17 20:03:05', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200204608344064, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200204608344064\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:53:32 +08:00\",\"cap-corr-id\":\"1319200204608344064\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:53:32.9840134+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:53:33', '2020-10-23 16:53:33', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200280713990144, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200280713990144\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:53:51 +08:00\",\"cap-corr-id\":\"1319200280713990144\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:53:51.1354824+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:53:51', '2020-10-23 16:53:51', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200384619483136, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200384619483136\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:54:15 +08:00\",\"cap-corr-id\":\"1319200384619483136\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:54:15.9078421+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:54:16', '2020-10-23 16:54:16', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200560994160640, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200560994160640\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:54:57 +08:00\",\"cap-corr-id\":\"1319200560994160640\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:54:57.9595375+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:54:58', '2020-10-23 16:54:58', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200657442181120, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200657442181120\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:55:20 +08:00\",\"cap-corr-id\":\"1319200657442181120\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:55:20.9536617+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:55:21', '2020-10-23 16:55:21', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200806365138944, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200806365138944\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:55:56 +08:00\",\"cap-corr-id\":\"1319200806365138944\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:55:56.4604217+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:55:56', '2020-10-23 16:55:56', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1319200951785852928, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1319200951785852928\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/10/22 16:56:31 +08:00\",\"cap-corr-id\":\"1319200951785852928\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-10-22T16:56:31.1318192+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-10-22 16:56:31', '2020-10-23 16:56:31', 'Succeeded'); -- ---------------------------- -- Table structure for cap.received diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj index 78a167373..5ec9bd15e 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj @@ -1,6 +1,6 @@  - + netcoreapp3.1 diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IdentityPermissionDefinitionProvider.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IdentityPermissionDefinitionProvider.cs index d2ce5ddde..cf8641777 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IdentityPermissionDefinitionProvider.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IdentityPermissionDefinitionProvider.cs @@ -30,8 +30,8 @@ namespace LINGYUN.Abp.Identity origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.Create, L("Permission:Create")); origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.Update, L("Permission:Edit")); origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.Delete, L("Permission:Delete")); - origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.ManageRoles, L("Permission:ChangeRoles")); - origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.ManageUsers, L("Permission:ChangeUsers")); + origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.ManageRoles, L("Permission:ManageRoles")); + origanizationUnitPermission.AddChild(IdentityPermissions.OrganizationUnits.ManageUsers, L("Permission:ManageUsers")); var identityClaimType = identityGroup.AddPermission(IdentityPermissions.IdentityClaimType.Default, L("Permission:IdentityClaimTypeManagement"), MultiTenancySides.Host); identityClaimType.AddChild(IdentityPermissions.IdentityClaimType.Create, L("Permission:Create"), MultiTenancySides.Host); diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/en.json b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/en.json index 646b6c6df..b0331e51f 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/en.json +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/en.json @@ -2,8 +2,8 @@ "culture": "en", "texts": { "Permission:OrganizationUnitManagement": "Organization unit management", - "Permission:ChangeRoles": "Change roles", - "Permission:ChangeUsers": "Change users", + "Permission:ManageRoles": "Management roles", + "Permission:ManageUsers": "Management users", "Permission:ManageClaims": "Management claims", "Permission:ManageOrganizationUnits": "Management organization units", "Permission:IdentityClaimTypeManagement": "Management claim types", @@ -13,6 +13,7 @@ "DisplayName:ClaimType": "Type", "DisplayName:ClaimValue": "Value", "ClaimSubject": "Claim - {0}", + "RoleSubject": "Role - {0}", "AddClaim": "Add claim", "UpdateClaim": "Update claim", "DeleteClaim": "Delete claim", diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/zh-Hans.json b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/zh-Hans.json index 88f98cbe6..7436021f5 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/zh-Hans.json +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/Localization/zh-Hans.json @@ -2,8 +2,8 @@ "culture": "zh-Hans", "texts": { "Permission:OrganizationUnitManagement": "组织机构管理", - "Permission:ChangeRoles": "更改角色", - "Permission:ChangeUsers": "更改用户", + "Permission:ManageRoles": "管理角色", + "Permission:ManageUsers": "管理用户", "Permission:ManageClaims": "管理声明", "Permission:ManageOrganizationUnits": "管理组织机构", "Permission:IdentityClaimTypeManagement": "管理声明类型", @@ -13,6 +13,7 @@ "DisplayName:ClaimType": "声明类型", "DisplayName:ClaimValue": "声明值", "ClaimSubject": "声明 - {0}", + "RoleSubject": "角色 - {0}", "AddClaim": "添加声明", "UpdateClaim": "变更声明", "DeleteClaim": "删除声明", diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissionDefinitionProvider.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissionDefinitionProvider.cs index 6b19a03e1..8466f840c 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissionDefinitionProvider.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissionDefinitionProvider.cs @@ -28,57 +28,29 @@ namespace LINGYUN.Abp.IdentityServer clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Create, L("Permissions:Create"), MultiTenancySides.Host); clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Update, L("Permissions:Update"), MultiTenancySides.Host); clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Clone, L("Permissions:Clone"), MultiTenancySides.Host); - clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Enabled, L("Permissions:Enabled"), MultiTenancySides.Host); - clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Disabled, L("Permissions:Disabled"), MultiTenancySides.Host); clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Delete, L("Permissions:Delete"), MultiTenancySides.Host); clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.ManagePermissions, L("Permissions:ManagePermissions"), MultiTenancySides.Host); - - // 客户端声明权限 - var clientClaimPermissiosn = clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Claims.Default, L("Permissions:Clients:Claims"), MultiTenancySides.Host); - clientClaimPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Claims.Create, L("Permissions:Create"), MultiTenancySides.Host); - clientClaimPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Claims.Update, L("Permissions:Update"), MultiTenancySides.Host); - clientClaimPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Claims.Delete, L("Permissions:Delete"), MultiTenancySides.Host); - - // 客户端密钥权限 - var clientSecretPermissiosn = clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Secrets.Default, L("Permissions:Clients:Secrets"), MultiTenancySides.Host); - clientSecretPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Secrets.Create, L("Permissions:Create"), MultiTenancySides.Host); - clientSecretPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Secrets.Update, L("Permissions:Update"), MultiTenancySides.Host); - clientSecretPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Secrets.Delete, L("Permissions:Delete"), MultiTenancySides.Host); - - // 客户端属性权限 - var clientPropertyPermissiosn = clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.Properties.Default, L("Permissions:Clients:Properties"), MultiTenancySides.Host); - clientPropertyPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Properties.Create, L("Permissions:Create"), MultiTenancySides.Host); - clientPropertyPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Properties.Update, L("Permissions:Update"), MultiTenancySides.Host); - clientPropertyPermissiosn.AddChild(AbpIdentityServerPermissions.Clients.Properties.Delete, L("Permissions:Delete"), MultiTenancySides.Host); + clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.ManageClaims, L("Permissions:ManageClaims"), MultiTenancySides.Host); + clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.ManageSecrets, L("Permissions:ManageSecrets"), MultiTenancySides.Host); + clientPermissions.AddChild(AbpIdentityServerPermissions.Clients.ManageProperties, L("Permissions:ManageProperties"), MultiTenancySides.Host); // Api资源权限 var apiResourcePermissions = identityServerGroup.AddPermission(AbpIdentityServerPermissions.ApiResources.Default, L("Permissions:ApiResources"), MultiTenancySides.Host); apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Create, L("Permissions:Create"), MultiTenancySides.Host); apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Update, L("Permissions:Update"), MultiTenancySides.Host); apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Delete, L("Permissions:Delete"), MultiTenancySides.Host); - - // Api作用域权限 - var apiResourceScopePermissions = apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Scope.Default, L("Permissions:ApiResources:Scope"), MultiTenancySides.Host); - apiResourceScopePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Scope.Create, L("Permissions:Create"), MultiTenancySides.Host); - apiResourceScopePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Scope.Update, L("Permissions:Update"), MultiTenancySides.Host); - apiResourceScopePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Scope.Delete, L("Permissions:Delete"), MultiTenancySides.Host); - - // Api密钥权限 - var apiResourceSecretPermissions = apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Secrets.Default, L("Permissions:ApiResources:Secrets"), MultiTenancySides.Host); - apiResourceSecretPermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Secrets.Create, L("Permissions:Create"), MultiTenancySides.Host); - apiResourceSecretPermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Secrets.Update, L("Permissions:Update"), MultiTenancySides.Host); - apiResourceSecretPermissions.AddChild(AbpIdentityServerPermissions.ApiResources.Secrets.Delete, L("Permissions:Delete"), MultiTenancySides.Host); + apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.ManageClaims, L("Permissions:ManageClaims"), MultiTenancySides.Host); + apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.ManageSecrets, L("Permissions:ManageSecrets"), MultiTenancySides.Host); + apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.ManageProperties, L("Permissions:ManageProperties"), MultiTenancySides.Host); + apiResourcePermissions.AddChild(AbpIdentityServerPermissions.ApiResources.ManageScopes, L("Permissions:ManageScopes"), MultiTenancySides.Host); // 身份资源权限 var identityResourcePermissions = identityServerGroup.AddPermission(AbpIdentityServerPermissions.IdentityResources.Default, L("Permissions:IdentityResources"), MultiTenancySides.Host); identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.Create, L("Permissions:Create"), MultiTenancySides.Host); identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.Update, L("Permissions:Update"), MultiTenancySides.Host); identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.Delete, L("Permissions:Delete"), MultiTenancySides.Host); - - // 身份资源属性权限 - var identityResourcePropertyPermissiosn = identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.Properties.Default, L("Permissions:IdentityResources:Properties"), MultiTenancySides.Host); - identityResourcePropertyPermissiosn.AddChild(AbpIdentityServerPermissions.IdentityResources.Properties.Create, L("Permissions:Create"), MultiTenancySides.Host); - identityResourcePropertyPermissiosn.AddChild(AbpIdentityServerPermissions.IdentityResources.Properties.Delete, L("Permissions:Delete"), MultiTenancySides.Host); + identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.ManageClaims, L("Permissions:ManageClaims"), MultiTenancySides.Host); + identityResourcePermissions.AddChild(AbpIdentityServerPermissions.IdentityResources.ManageProperties, L("Permissions:ManageProperties"), MultiTenancySides.Host); } protected virtual LocalizableString L(string name) diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissions.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissions.cs index 5dbe0c40a..8e8a5e284 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissions.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/AbpIdentityServerPermissions.cs @@ -2,7 +2,7 @@ { public class AbpIdentityServerPermissions { - public const string GroupName = "IdentityServer"; + public const string GroupName = "AbpIdentityServer"; public static class Clients { @@ -11,33 +11,10 @@ public const string Update = Default + ".Update"; public const string Delete = Default + ".Delete"; public const string Clone = Default + ".Clone"; - public const string Enabled = Default + ".Enabled"; - public const string Disabled = Default + ".Disabled"; public const string ManagePermissions = Default + ".ManagePermissions"; - - public static class Claims - { - public const string Default = Clients.Default + ".Claims"; - public const string Create = Default + ".Create"; - public const string Update = Default + ".Update"; - public const string Delete = Default + ".Delete"; - } - - public static class Secrets - { - public const string Default = Clients.Default + ".Secrets"; - public const string Create = Default + ".Create"; - public const string Update = Default + ".Update"; - public const string Delete = Default + ".Delete"; - } - - public static class Properties - { - public const string Default = Clients.Default + ".Properties"; - public const string Create = Default + ".Create"; - public const string Update = Default + ".Update"; - public const string Delete = Default + ".Delete"; - } + public const string ManageClaims = Default + ".ManageClaims"; + public const string ManageSecrets = Default + ".ManageSecrets"; + public const string ManageProperties = Default + ".ManageProperties"; } public static class ApiResources @@ -46,21 +23,10 @@ public const string Create = Default + ".Create"; public const string Update = Default + ".Update"; public const string Delete = Default + ".Delete"; - public static class Scope - { - public const string Default = ApiResources.Default + ".Scope"; - public const string Create = Default + ".Create"; - public const string Update = Default + ".Update"; - public const string Delete = Default + ".Delete"; - } - - public static class Secrets - { - public const string Default = ApiResources.Default + ".Secrets"; - public const string Create = Default + ".Create"; - public const string Update = Default + ".Update"; - public const string Delete = Default + ".Delete"; - } + public const string ManageScopes = Default + ".ManageScopes"; + public const string ManageClaims = Default + ".ManageClaims"; + public const string ManageSecrets = Default + ".ManageSecrets"; + public const string ManageProperties = Default + ".ManageProperties"; } public static class IdentityResources @@ -69,13 +35,8 @@ public const string Create = Default + ".Create"; public const string Update = Default + ".Update"; public const string Delete = Default + ".Delete"; - - public static class Properties - { - public const string Default = IdentityResources.Default + ".Properties"; - public const string Create = Default + ".Create"; - public const string Delete = Default + ".Delete"; - } + public const string ManageClaims = Default + ".ManageClaims"; + public const string ManageProperties = Default + ".ManageProperties"; } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceClaimDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceClaimDto.cs deleted file mode 100644 index 220a9d8b6..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceClaimDto.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiResourceClaimDto - { - public string Type { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateDto.cs index c468b0ff3..07350361d 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateDto.cs @@ -1,28 +1,12 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using Volo.Abp.IdentityServer.ApiResources; namespace LINGYUN.Abp.IdentityServer.ApiResources { - public class ApiResourceCreateDto + public class ApiResourceCreateDto : ApiResourceCreateOrUpdateDto { [Required] [StringLength(ApiResourceConsts.NameMaxLength)] public string Name { get; set; } - - [StringLength(ApiResourceConsts.DisplayNameMaxLength)] - public string DisplayName { get; set; } - - [StringLength(ApiResourceConsts.DescriptionMaxLength)] - public string Description { get; set; } - - public bool Enabled { get; set; } - - public List UserClaims { get; set; } - public ApiResourceCreateDto() - { - Enabled = true; - UserClaims = new List(); - } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateOrUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateOrUpdateDto.cs new file mode 100644 index 000000000..d2a98b567 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceCreateOrUpdateDto.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.IdentityServer.ApiResources; + +namespace LINGYUN.Abp.IdentityServer.ApiResources +{ + public class ApiResourceCreateOrUpdateDto + { + [StringLength(ApiResourceConsts.DisplayNameMaxLength)] + public string DisplayName { get; set; } + + [StringLength(ApiResourceConsts.DescriptionMaxLength)] + public string Description { get; set; } + + public bool Enabled { get; set; } + + public List UserClaims { get; set; } + + public List Scopes { get; set; } + + public List Secrets { get; set; } + + public Dictionary Properties { get; set; } + + protected ApiResourceCreateOrUpdateDto() + { + UserClaims = new List(); + Scopes = new List(); + Secrets = new List(); + Properties = new Dictionary(); + } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceDto.cs index 094218d6f..71d4e6335 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceDto.cs @@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.IdentityServer.ApiResources { - public class ApiResourceDto : FullAuditedEntityDto + public class ApiResourceDto : ExtensibleFullAuditedEntityDto { public string Name { get; set; } @@ -18,13 +18,16 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources public List Scopes { get; set; } - public List UserClaims { get; set; } + public List UserClaims { get; set; } + + public Dictionary Properties { get; set; } public ApiResourceDto() { + UserClaims = new List(); Scopes = new List(); Secrets = new List(); - UserClaims = new List(); + Properties = new Dictionary(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceGetByIdInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceGetByIdInputDto.cs deleted file mode 100644 index e331fce50..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceGetByIdInputDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiResourceGetByIdInputDto : EntityDto - { - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceUpdateDto.cs index c88f785ad..1a30104cd 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceUpdateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiResourceUpdateDto.cs @@ -1,29 +1,6 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; -using Volo.Abp.IdentityServer.ApiResources; - -namespace LINGYUN.Abp.IdentityServer.ApiResources +namespace LINGYUN.Abp.IdentityServer.ApiResources { - public class ApiResourceUpdateDto + public class ApiResourceUpdateDto : ApiResourceCreateOrUpdateDto { - [Required] - public Guid Id { get; set; } - - [StringLength(ApiResourceConsts.DisplayNameMaxLength)] - public string DisplayName { get; set; } - - [StringLength(ApiResourceConsts.DescriptionMaxLength)] - public string Description { get; set; } - - public bool Enabled { get; set; } - - public List UserClaims { get; set; } - - public ApiResourceUpdateDto() - { - UserClaims = new List(); - } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeClaimDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeClaimDto.cs deleted file mode 100644 index 09ce3df47..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeClaimDto.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiScopeClaimDto - { - public string Type { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeCreateDto.cs index 25470b601..831cbdec1 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeCreateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeCreateDto.cs @@ -26,11 +26,11 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources public bool ShowInDiscoveryDocument { get; set; } - public List UserClaims { get; set; } + public List UserClaims { get; set; } public ApiScopeCreateDto() { - UserClaims = new List(); + UserClaims = new List(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeDto.cs index 6e6a99f87..b38b638a7 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeDto.cs @@ -16,11 +16,11 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources public bool ShowInDiscoveryDocument { get; set; } - public List UserClaims { get; set; } + public List UserClaims { get; set; } public ApiScopeDto() { - UserClaims = new List(); + UserClaims = new List(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeGetByNameInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeGetByNameInputDto.cs deleted file mode 100644 index d306a5b07..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiScopeGetByNameInputDto.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.ApiResources; - -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiScopeGetByNameInputDto - { - [Required] - public Guid ApiResourceId { get; set; } - - [Required] - [StringLength(ApiScopeConsts.NameMaxLength)] - public string Name { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateDto.cs deleted file mode 100644 index 88a7a7618..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateDto.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiSecretCreateDto - { - [Required] - public Guid ApiResourceId { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.TypeMaxLength))] - public string Type { get; set; } - - public HashType HashType { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.ValueMaxLength))] - public string Value { get; set; } - - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.DescriptionMaxLength))] - public string Description { get; set; } - - public DateTime? Expiration { get; set; } - - public ApiSecretCreateDto() - { - HashType = 0; - } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateOrUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateOrUpdateDto.cs new file mode 100644 index 000000000..fc8e21ac6 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretCreateOrUpdateDto.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.IdentityServer.ApiResources +{ + public class ApiSecretCreateOrUpdateDto : SecretBaseDto + { + public HashType HashType { get; set; } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretGetByTypeInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretGetByTypeInputDto.cs deleted file mode 100644 index 76b930011..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/Dto/ApiSecretGetByTypeInputDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.ApiResources -{ - public class ApiSecretGetByTypeInputDto - { - [Required] - public Guid ApiResourceId { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.TypeMaxLength))] - public string Type { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.ValueMaxLength))] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceAppService.cs index 152582492..3f34ba2a3 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceAppService.cs @@ -1,27 +1,15 @@ -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; +using System; using Volo.Abp.Application.Services; namespace LINGYUN.Abp.IdentityServer.ApiResources { - public interface IApiResourceAppService : IApplicationService + public interface IApiResourceAppService : + ICrudAppService< + ApiResourceDto, + Guid, + ApiResourceGetByPagedInputDto, + ApiResourceCreateDto, + ApiResourceUpdateDto> { - Task GetAsync(ApiResourceGetByIdInputDto apiResourceGetById); - - Task> GetAsync(ApiResourceGetByPagedInputDto apiResourceGetByPaged); - - Task CreateAsync(ApiResourceCreateDto apiResourceCreate); - - Task UpdateAsync(ApiResourceUpdateDto apiResourceUpdate); - - Task DeleteAsync(ApiResourceGetByIdInputDto apiResourceGetById); - - Task AddSecretAsync(ApiSecretCreateDto apiSecretCreate); - - Task DeleteSecretAsync(ApiSecretGetByTypeInputDto apiSecretGetByType); - - Task AddScopeAsync(ApiScopeCreateDto apiScopeCreate); - - Task DeleteScopeAsync(ApiScopeGetByNameInputDto apiScopeGetByName); } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimCreateDto.cs deleted file mode 100644 index f36d03139..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimCreateDto.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientClaimCreateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [StringLength(ClientClaimConsts.TypeMaxLength)] - public string Type { get; set; } - - [Required] - [StringLength(ClientClaimConsts.ValueMaxLength)] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimGetByKeyInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimGetByKeyInputDto.cs deleted file mode 100644 index 68a580b03..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimGetByKeyInputDto.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientClaimGetByKeyInputDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [StringLength(ClientClaimConsts.TypeMaxLength)] - public string Type { get; set; } - - [Required] - [StringLength(ClientClaimConsts.ValueMaxLength)] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimUpdateDto.cs deleted file mode 100644 index 23770dadc..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientClaimUpdateDto.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientClaimUpdateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [StringLength(ClientClaimConsts.TypeMaxLength)] - public string Type { get; set; } - - [Required] - [StringLength(ClientClaimConsts.ValueMaxLength)] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneDto.cs similarity index 90% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneInputDto.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneDto.cs index 752c384de..9139018cb 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneInputDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCloneDto.cs @@ -1,16 +1,10 @@ -using System; -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using Volo.Abp.IdentityServer.Clients; namespace LINGYUN.Abp.IdentityServer.Clients { - public class ClientCloneInputDto + public class ClientCloneDto { - /// - /// 来源客户端标识 - /// - [Required] - public Guid SourceClientId { get; set; } /// /// 客户端标识 /// @@ -45,6 +39,10 @@ namespace LINGYUN.Abp.IdentityServer.Clients /// public bool CopyClaim { get; set; } /// + /// 复制客户端密钥 + /// + public bool CopySecret { get; set; } + /// /// 复制客户端跨域来源 /// public bool CopyAllowedCorsOrigin { get; set; } @@ -60,7 +58,7 @@ namespace LINGYUN.Abp.IdentityServer.Clients /// 复制客户端 IdP 限制 /// public bool CopyIdentityProviderRestriction { get; set; } - public ClientCloneInputDto() + public ClientCloneDto() { CopyAllowedCorsOrigin = true; CopyAllowedGrantType = true; @@ -70,6 +68,7 @@ namespace LINGYUN.Abp.IdentityServer.Clients CopyPostLogoutRedirectUri = true; CopyPropertie = true; CopyRedirectUri = true; + CopySecret = true; } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCorsOriginDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCorsOriginDto.cs deleted file mode 100644 index 5fb829c5b..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCorsOriginDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientCorsOriginDto : EntityDto - { - public string Origin { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateDto.cs index a67d22b1d..271ee41b0 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateDto.cs @@ -1,26 +1,7 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; - -namespace LINGYUN.Abp.IdentityServer.Clients +namespace LINGYUN.Abp.IdentityServer.Clients { - public class ClientCreateDto + public class ClientCreateDto : ClientCreateOrUpdateDto { - [Required] - [StringLength(ClientConsts.ClientIdMaxLength)] - public string ClientId { get; set; } - - [Required] - [StringLength(ClientConsts.ClientNameMaxLength)] - public string ClientName { get; set; } - - [StringLength(ClientConsts.DescriptionMaxLength)] - public string Description { get; set; } - public List AllowedGrantTypes { get; set; } - public ClientCreateDto() - { - AllowedGrantTypes = new List(); - } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateOrUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateOrUpdateDto.cs new file mode 100644 index 000000000..009faf9a5 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientCreateOrUpdateDto.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.IdentityServer.Clients; + +namespace LINGYUN.Abp.IdentityServer.Clients +{ + public class ClientCreateOrUpdateDto + { + [Required] + [StringLength(ClientConsts.ClientIdMaxLength)] + public string ClientId { get; set; } + + [Required] + [StringLength(ClientConsts.ClientNameMaxLength)] + public string ClientName { get; set; } + + [StringLength(ClientConsts.DescriptionMaxLength)] + public string Description { get; set; } + + public List AllowedGrantTypes { get; set; } + + protected ClientCreateOrUpdateDto() + { + AllowedGrantTypes = new List(); + } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientDto.cs index 7c2aca25f..0e9e3bedc 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientDto.cs @@ -82,34 +82,34 @@ namespace LINGYUN.Abp.IdentityServer.Clients public string ConcurrencyStamp { get; set; } - public List AllowedScopes { get; set; } + public List AllowedScopes { get; set; } public List ClientSecrets { get; set; } - public List AllowedGrantTypes { get; set; } + public List AllowedGrantTypes { get; set; } - public List AllowedCorsOrigins { get; set; } + public List AllowedCorsOrigins { get; set; } - public List RedirectUris { get; set; } + public List RedirectUris { get; set; } - public List PostLogoutRedirectUris { get; set; } + public List PostLogoutRedirectUris { get; set; } - public List IdentityProviderRestrictions { get; set; } + public List IdentityProviderRestrictions { get; set; } public List Claims { get; set; } - public List Properties { get; set; } + public Dictionary Properties { get; set; } public ClientDto() { Claims = new List(); - Properties = new List(); - AllowedScopes = new List(); + Properties = new Dictionary(); + AllowedScopes = new List(); ClientSecrets = new List(); - RedirectUris = new List(); - AllowedGrantTypes = new List(); - AllowedCorsOrigins = new List(); - PostLogoutRedirectUris = new List(); - IdentityProviderRestrictions = new List(); + RedirectUris = new List(); + AllowedGrantTypes = new List(); + AllowedCorsOrigins = new List(); + PostLogoutRedirectUris = new List(); + IdentityProviderRestrictions = new List(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByIdInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByIdInputDto.cs deleted file mode 100644 index fcdd34d61..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByIdInputDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientGetByIdInputDto - { - [Required] - public Guid Id { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedDto.cs similarity index 65% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedInputDto.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedDto.cs index 1205c96f3..5ccc7c609 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedInputDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGetByPagedDto.cs @@ -2,7 +2,7 @@ namespace LINGYUN.Abp.IdentityServer.Clients { - public class ClientGetByPagedInputDto : PagedAndSortedResultRequestDto + public class ClientGetByPagedDto : PagedAndSortedResultRequestDto { public string Filter { get; set; } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGrantTypeDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGrantTypeDto.cs deleted file mode 100644 index acdb40f10..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientGrantTypeDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientGrantTypeDto : EntityDto - { - public string GrantType { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientIdPRestrictionDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientIdPRestrictionDto.cs deleted file mode 100644 index bdd84b339..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientIdPRestrictionDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientIdPRestrictionDto : EntityDto - { - public string Provider { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPostLogoutRedirectUriDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPostLogoutRedirectUriDto.cs deleted file mode 100644 index 888c5b7a6..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPostLogoutRedirectUriDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientPostLogoutRedirectUriDto : EntityDto - { - public string PostLogoutRedirectUri { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyCreateDto.cs deleted file mode 100644 index 3d0ad345b..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyCreateDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientPropertyCreateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.KeyMaxLength))] - public string Key { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.ValueMaxLength))] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyDto.cs deleted file mode 100644 index ed72e3013..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientPropertyDto : EntityDto - { - public string Key { get; set; } - - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyGetByKeyDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyGetByKeyDto.cs deleted file mode 100644 index 81bfb945f..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyGetByKeyDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientPropertyGetByKeyDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.KeyMaxLength))] - public string Key { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.ValueMaxLength))] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyUpdateDto.cs deleted file mode 100644 index ace028ade..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientPropertyUpdateDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientPropertyUpdateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.KeyMaxLength))] - public string Key { get; set; } - - [Required] - [DynamicStringLength(typeof(ClientPropertyConsts), nameof(ClientPropertyConsts.ValueMaxLength))] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientRedirectUriDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientRedirectUriDto.cs deleted file mode 100644 index 2bbb822ba..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientRedirectUriDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientRedirectUriDto : EntityDto - { - public string RedirectUri { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientScopeDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientScopeDto.cs deleted file mode 100644 index be8876bcf..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientScopeDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientScopeDto : EntityDto - { - public string Scope { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretCreateDto.cs deleted file mode 100644 index 7d00a26bc..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretCreateDto.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientSecretCreateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.TypeMaxLength))] - public string Type { get; set; } - - public HashType HashType { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.ValueMaxLength))] - public string Value { get; set; } - - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.DescriptionMaxLength))] - public string Description { get; set; } - - public DateTime? Expiration { get; set; } - - public ClientSecretCreateDto() - { - HashType = 0; - } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretGetByTypeDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretGetByTypeDto.cs deleted file mode 100644 index 607b00aee..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretGetByTypeDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientSecretGetByTypeDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.TypeMaxLength))] - public string Type { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.ValueMaxLength))] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretUpdateDto.cs deleted file mode 100644 index 93bb12cfa..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientSecretUpdateDto.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientSecretUpdateDto - { - [Required] - public Guid ClientId { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.TypeMaxLength))] - public string Type { get; set; } - - public HashType HashType { get; set; } - - [Required] - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.ValueMaxLength))] - public string Value { get; set; } - - [DynamicStringLength(typeof(SecretConsts), nameof(SecretConsts.DescriptionMaxLength))] - public string Description { get; set; } - - public DateTime? Expiration { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateDto.cs index 2c3ac3f59..dad7d749c 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateDto.cs @@ -4,20 +4,8 @@ using Volo.Abp.IdentityServer.Clients; namespace LINGYUN.Abp.IdentityServer.Clients { - public class ClientUpdateDto + public class ClientUpdateDto : ClientCreateOrUpdateDto { - [Required] - [StringLength(1000)] - public string ConcurrencyStamp { get; set; } - - [StringLength(ClientConsts.ClientIdMaxLength)] - public string ClientId { get; set; } - - [StringLength(ClientConsts.ClientNameMaxLength)] - public string ClientName { get; set; } - - [StringLength(ClientConsts.DescriptionMaxLength)] - public string Description { get; set; } [StringLength(ClientConsts.ClientUriMaxLength)] public string ClientUri { get; set; } @@ -25,62 +13,62 @@ namespace LINGYUN.Abp.IdentityServer.Clients [StringLength(ClientConsts.LogoUriMaxLength)] public string LogoUri { get; set; } - public bool? Enabled { get; set; } + public bool Enabled { get; set; } [StringLength(ClientConsts.ProtocolTypeMaxLength)] public string ProtocolType { get; set; } - public bool? RequireClientSecret { get; set; } + public bool RequireClientSecret { get; set; } - public bool? RequireConsent { get; set; } + public bool RequireConsent { get; set; } - public bool? AllowRememberConsent { get; set; } + public bool AllowRememberConsent { get; set; } - public bool? AlwaysIncludeUserClaimsInIdToken { get; set; } + public bool AlwaysIncludeUserClaimsInIdToken { get; set; } - public bool? RequirePkce { get; set; } + public bool RequirePkce { get; set; } - public bool? AllowPlainTextPkce { get; set; } + public bool AllowPlainTextPkce { get; set; } - public bool? AllowAccessTokensViaBrowser { get; set; } + public bool AllowAccessTokensViaBrowser { get; set; } [StringLength(ClientConsts.FrontChannelLogoutUriMaxLength)] public string FrontChannelLogoutUri { get; set; } - public bool? FrontChannelLogoutSessionRequired { get; set; } + public bool FrontChannelLogoutSessionRequired { get; set; } [StringLength(ClientConsts.BackChannelLogoutUriMaxLength)] public string BackChannelLogoutUri { get; set; } - public bool? BackChannelLogoutSessionRequired { get; set; } + public bool BackChannelLogoutSessionRequired { get; set; } - public bool? AllowOfflineAccess { get; set; } + public bool AllowOfflineAccess { get; set; } - public int? IdentityTokenLifetime { get; set; } + public int IdentityTokenLifetime { get; set; } - public int? AccessTokenLifetime { get; set; } + public int AccessTokenLifetime { get; set; } - public int? AuthorizationCodeLifetime { get; set; } + public int AuthorizationCodeLifetime { get; set; } public int? ConsentLifetime { get; set; } - public int? AbsoluteRefreshTokenLifetime { get; set; } + public int AbsoluteRefreshTokenLifetime { get; set; } - public int? SlidingRefreshTokenLifetime { get; set; } + public int SlidingRefreshTokenLifetime { get; set; } - public int? RefreshTokenUsage { get; set; } + public int RefreshTokenUsage { get; set; } - public bool? UpdateAccessTokenClaimsOnRefresh { get; set; } + public bool UpdateAccessTokenClaimsOnRefresh { get; set; } - public int? RefreshTokenExpiration { get; set; } + public int RefreshTokenExpiration { get; set; } - public int? AccessTokenType { get; set; } + public int AccessTokenType { get; set; } - public bool? EnableLocalLogin { get; set; } + public bool EnableLocalLogin { get; set; } - public bool? IncludeJwtId { get; set; } + public bool IncludeJwtId { get; set; } - public bool? AlwaysSendClientClaims { get; set; } + public bool AlwaysSendClientClaims { get; set; } [StringLength(ClientConsts.ClientClaimsPrefixMaxLength)] public string ClientClaimsPrefix { get; set; } @@ -93,29 +81,52 @@ namespace LINGYUN.Abp.IdentityServer.Clients [StringLength(ClientConsts.UserCodeTypeMaxLength)] public string UserCodeType { get; set; } - public int? DeviceCodeLifetime { get; set; } - - public List AllowedScopes { get; set; } - - public List AllowedGrantTypes { get; set; } - - public List AllowedCorsOrigins { get; set; } - - public List RedirectUris { get; set; } - - public List PostLogoutRedirectUris { get; set; } + public int DeviceCodeLifetime { get; set; } + /// + /// 允许的作用域 + /// + public List AllowedScopes { get; set; } + /// + /// 允许同源 + /// + public List AllowedCorsOrigins { get; set; } + /// + /// 重定向uri + /// + public List RedirectUris { get; set; } + /// + /// 登出重定向uri + /// + public List PostLogoutRedirectUris { get; set; } + /// + /// 限制提供商 + /// + public List IdentityProviderRestrictions { get; set; } + /// + /// 属性 + /// + public Dictionary Properties { get; set; } + /// + /// 密钥 + /// + public List Secrets { get; set; } + /// + /// 声明 + /// + public List Claims { get; set; } - public List IdentityProviderRestrictions { get; set; } public ClientUpdateDto() { Enabled = true; DeviceCodeLifetime = 300; - AllowedScopes = new List(); - RedirectUris = new List(); - AllowedGrantTypes = new List(); - AllowedCorsOrigins = new List(); - PostLogoutRedirectUris = new List(); - IdentityProviderRestrictions = new List(); + AllowedScopes = new List(); + RedirectUris = new List(); + AllowedCorsOrigins = new List(); + PostLogoutRedirectUris = new List(); + IdentityProviderRestrictions = new List(); + Properties = new Dictionary(); + Secrets = new List(); + Claims = new List(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateInputDto.cs deleted file mode 100644 index 8d41aff7e..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/ClientUpdateInputDto.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.IdentityServer.Clients -{ - public class ClientUpdateInputDto - { - [Required] - public Guid Id { get; set; } - - [Required] - public ClientUpdateDto Client { get; set; } - - public ClientUpdateInputDto() - { - Client = new ClientUpdateDto(); - } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/SecretCreateOrUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/SecretCreateOrUpdateDto.cs new file mode 100644 index 000000000..13d7dee25 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/Dto/SecretCreateOrUpdateDto.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.IdentityServer.Clients +{ + public class SecretCreateOrUpdateDto : SecretBaseDto + { + public HashType HashType { get; set; } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/IClientAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/IClientAppService.cs index 1c774d7c4..48496ee74 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/IClientAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Clients/IClientAppService.cs @@ -1,39 +1,24 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace LINGYUN.Abp.IdentityServer.Clients { - public interface IClientAppService : IApplicationService + public interface IClientAppService : + ICrudAppService< + ClientDto, + Guid, + ClientGetByPagedDto, + ClientCreateDto, + ClientUpdateDto> { - Task GetAsync(ClientGetByIdInputDto clientGetById); + Task CloneAsync(Guid id, ClientCloneDto input); - Task> GetAsync(ClientGetByPagedInputDto clientGetByPaged); + Task> GetAssignableApiResourcesAsync(); - Task CreateAsync(ClientCreateDto clientCreate); + Task> GetAssignableIdentityResourcesAsync(); - Task UpdateAsync(ClientUpdateInputDto clientUpdateInput); - - Task CloneAsync(ClientCloneInputDto clientCloneInput); - - Task DeleteAsync(ClientGetByIdInputDto clientGetByIdInput); - - Task AddClaimAsync(ClientClaimCreateDto clientClaimCreate); - - Task UpdateClaimAsync(ClientClaimUpdateDto clientClaimUpdate); - - Task DeleteClaimAsync(ClientClaimGetByKeyInputDto clientClaimGetByKey); - - Task AddPropertyAsync(ClientPropertyCreateDto clientPropertyCreate); - - Task UpdatePropertyAsync(ClientPropertyUpdateDto clientPropertyUpdate); - - Task DeletePropertyAsync(ClientPropertyGetByKeyDto clientPropertyGetByKey); - - Task AddSecretAsync(ClientSecretCreateDto clientSecretCreate); - - Task UpdateSecretAsync(ClientSecretUpdateDto clientSecretUpdate); - - Task DeleteSecretAsync(ClientSecretGetByTypeDto clientSecretGetByType); + Task> GetAllDistinctAllowedCorsOriginsAsync(); } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityClaimDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityClaimDto.cs deleted file mode 100644 index 752291084..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityClaimDto.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityClaimDto - { - public string Type { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateOrUpdateDto.cs similarity index 76% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateDto.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateOrUpdateDto.cs index 6e3479d70..a517e3eed 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceCreateOrUpdateDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Validation; namespace LINGYUN.Abp.IdentityServer.IdentityResources { - public class IdentityResourceCreateDto + public class IdentityResourceCreateOrUpdateDto { [Required] [DynamicStringLength(typeof(IdentityResourceConsts), nameof(IdentityResourceConsts.NameMaxLength))] @@ -25,14 +25,18 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources public bool ShowInDiscoveryDocument { get; set; } - public List UserClaims { get; set; } + public List UserClaims { get; set; } - public IdentityResourceCreateDto() + public Dictionary Properties { get; set; } + + public IdentityResourceCreateOrUpdateDto() { + UserClaims = new List(); + Properties = new Dictionary(); + Enabled = true; Required = false; ShowInDiscoveryDocument = false; - UserClaims = new List(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceDto.cs index b72617fdd..49649a370 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceDto.cs @@ -1,23 +1,17 @@ using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using Volo.Abp.Application.Dtos; -using Volo.Abp.IdentityServer.IdentityResources; namespace LINGYUN.Abp.IdentityServer.IdentityResources { - public class IdentityResourceDto : FullAuditedEntityDto + public class IdentityResourceDto : ExtensibleFullAuditedEntityDto { public string Name { get; set; } - public string DisplayName { get; set; } - public string Description { get; set; } - public string ConcurrencyStamp { get; set; } - public bool Enabled { get; set; } public bool Required { get; set; } @@ -26,14 +20,14 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources public bool ShowInDiscoveryDocument { get; set; } - public List UserClaims { get; set; } + public List UserClaims { get; set; } - public List Properties { get; set; } + public Dictionary Properties { get; set; } public IdentityResourceDto() { - UserClaims = new List(); - Properties = new List(); + UserClaims = new List(); + Properties = new Dictionary(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByIdInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByIdInputDto.cs deleted file mode 100644 index 5bf778a73..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByIdInputDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using Volo.Abp.Application.Dtos; - -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityResourceGetByIdInputDto : EntityDto - { - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedInputDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedDto.cs similarity index 63% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedInputDto.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedDto.cs index cc42d784e..555e4fa01 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedInputDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceGetByPagedDto.cs @@ -2,7 +2,7 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources { - public class IdentityResourceGetByPagedInputDto : PagedAndSortedResultRequestDto + public class IdentityResourceGetByPagedDto : PagedAndSortedResultRequestDto { public string Filter { get; set; } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyCreateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyCreateDto.cs deleted file mode 100644 index 94d02ff5f..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyCreateDto.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityResourcePropertyCreateDto - { - [Required] - public Guid IdentityResourceId { get; set; } - - [Required] - [StringLength(2000)] - public string ConcurrencyStamp { get; set; } - - [Required] - [StringLength(100)] - public string Key { get; set; } - - [Required] - [StringLength(2000)] - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyDto.cs deleted file mode 100644 index ef44166d1..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityResourcePropertyDto - { - public string Key { get; set; } - - public string Value { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyGetByKeyDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyGetByKeyDto.cs deleted file mode 100644 index ea2cb0a30..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourcePropertyGetByKeyDto.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityResourcePropertyGetByKeyDto - { - [Required] - public Guid IdentityResourceId { get; set; } - - [Required] - [StringLength(100)] - public string Key { get; set; } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceUpdateDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceUpdateDto.cs deleted file mode 100644 index 0d5e46ed6..000000000 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/Dto/IdentityResourceUpdateDto.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Volo.Abp.IdentityServer.IdentityResources; -using Volo.Abp.Validation; - -namespace LINGYUN.Abp.IdentityServer.IdentityResources -{ - public class IdentityResourceUpdateDto - { - [Required] - public Guid Id { get; set; } - - [Required] - [StringLength(2000)] - public string ConcurrencyStamp { get; set; } - - [DynamicStringLength(typeof(IdentityResourceConsts), nameof(IdentityResourceConsts.NameMaxLength))] - public string Name { get; set; } - - [DynamicStringLength(typeof(IdentityResourceConsts), nameof(IdentityResourceConsts.DisplayNameMaxLength))] - public string DisplayName { get; set; } - - [DynamicStringLength(typeof(IdentityResourceConsts), nameof(IdentityResourceConsts.DescriptionMaxLength))] - public string Description { get; set; } - - public bool Enabled { get; set; } - - public bool Required { get; set; } - - public bool Emphasize { get; set; } - - public bool ShowInDiscoveryDocument { get; set; } - - public List UserClaims { get; set; } - - public IdentityResourceUpdateDto() - { - Enabled = true; - Required = false; - ShowInDiscoveryDocument = false; - UserClaims = new List(); - } - } -} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceAppService.cs index 5b89e7d96..1c8bc665e 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceAppService.cs @@ -1,23 +1,16 @@ -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; +using System; using Volo.Abp.Application.Services; namespace LINGYUN.Abp.IdentityServer.IdentityResources { - public interface IIdentityResourceAppService : IApplicationService + public interface IIdentityResourceAppService : + ICrudAppService< + IdentityResourceDto, + Guid, + IdentityResourceGetByPagedDto, + IdentityResourceCreateOrUpdateDto, + IdentityResourceCreateOrUpdateDto + > { - Task GetAsync(IdentityResourceGetByIdInputDto identityResourceGetById); - - Task> GetAsync(IdentityResourceGetByPagedInputDto identityResourceGetByPaged); - - Task CreateAsync(IdentityResourceCreateDto identityResourceCreate); - - Task UpdateAsync(IdentityResourceUpdateDto identityResourceUpdate); - - Task DeleteAsync(IdentityResourceGetByIdInputDto identityResourceGetById); - - Task AddPropertyAsync(IdentityResourcePropertyCreateDto identityResourcePropertyCreate); - - Task DeletePropertyAsync(IdentityResourcePropertyGetByKeyDto identityResourcePropertyGetByKey); } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/en.json b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/en.json index 2b174ebd2..5a7f49b35 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/en.json +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/en.json @@ -5,19 +5,15 @@ "Permissions:Create": "Create", "Permissions:Update": "Update", "Permissions:Clone": "Clone", - "Permissions:Enabled": "Enabled", - "Permissions:Disabled": "Disabled", "Permissions:Delete": "Delete", + "Permissions:ManageClaims": "Claims", + "Permissions:ManageSecrets": "Secrets", + "Permissions:ManageScopes": "Scopes", + "Permissions:ManageProperties": "Properties", "Permissions:ManagePermissions": "Permissions", "Permissions:Clients": "Clients", - "Permissions:Clients:Claims": "Client claim", - "Permissions:Clients:Secrets": "Client secret", - "Permissions:Clients:Properties": "Client property", "Permissions:ApiResources": "ApiResources", - "Permissions:ApiResources:Scope": "Api scope", - "Permissions:ApiResources:Secrets": "Api secret", "Permissions:IdentityResources": "IdentityResources", - "Permissions:IdentityResources:Properties": "Identity property", "ClientIdExisted": "Client id: {0} already exists!", "ApiResourceNameExisted": "Api resource name: {0} already exists!", "IdentityResourceNameExisted": "Identity resource name: {0} already exists!", @@ -26,6 +22,106 @@ "ClientSecretNotFound": "Client secret: {0} not found!", "ClientPropertyNotFound": "Client property: {0} not found!", "IdentityResourcePropertyNotFound": "Identity resource property: {0} not found!", - "EncryptionNotImplemented": "Encryption type: {0} not implemented!" + "EncryptionNotImplemented": "Encryption type: {0} not implemented!", + "Basics": "Basics", + "Authentication": "Authentication", + "Token": "Token", + "Consent": "Consent", + "DeviceFlow": "Device Flow", + "Advanced": "Advanced", + "Resource:Enabled": "Enabled", + "Resource:New": "Add New", + "Resource:Edit": "Edit", + "Resource:Delete": "Delete", + "Resource:WillDelete": "Resource :{0} will be deleted", + "Resource:Name": "Resource - {0}", + "Resource:Api": "Api Resource", + "Resource:Identity": "Identity Resource", + "UserClaim": "User claim", + "NoClaim": "Owned claims", + "ExistsClaim": "Not owned claims", + "Scope": "Scopes", + "Secret": "Secrets", + "Name": "Name", + "DisplayName": "Display Name", + "Description": "Description", + "Required": "Required", + "Emphasize": "Emphasize", + "ShowInDiscoveryDocument": "Show In Discovery Document", + "Expiration": "Expiration", + "Scope:New": "Add New", + "Scope:Delete": "Delete", + "Secret:New": "Add New", + "Secret:Type": "Type", + "Secret:HashType": "Hash Type", + "Secret:HashTypeOnlySharedSecret": "The hash type applies only to the SharedSecret type", + "Secret:Value": "Value", + "Client:Enabled": "Enabled", + "Client:New": "Add New", + "Client:Edit": "Edit", + "Client:Delete": "Delete", + "Client:WillDelete": "Client :{0} will be deleted", + "Client:Name": "Client - {0}", + "Client:Id": "Client Id", + "Client:Clone": "Clone", + "Clone:CopyAllowedGrantType": "Copy the Client allowed GrantType", + "Clone:CopyRedirectUri": "Copy the Client redirect Uri", + "Clone:CopyAllowedScope": "Copy the Client scopes", + "Clone:CopyClaim": "Copy the Client claims", + "Clone:CopySecret": "Copy the Client secrets", + "Clone:CopyAllowedCorsOrigin": "Copy the Client Cors-Origin Uri", + "Clone:CopyPostLogoutRedirectUri": "Copy the Client Redirect Uri", + "Clone:CopyProperties": "Copy the Client Properties", + "Clone:CopyIdentityProviderRestriction": "Copy the Client Identity Provider Restriction", + "Client:ProtocolType": "Protocol Type", + "Client:RequiredClientSecret": "Require Client Secret", + "Client:RequiredPkce": "Required Pkce", + "Client:AllowedPlainTextPkce": "Allowed Plain Text Pkce", + "Client:AllowedOfflineAccess": "Allowed Offline Access", + "Client:AllowedScopes": "Allowed Scopes", + "Client:RedirectUris": "Redirect Uris", + "Client:AllowedGrantTypes": "Allowed Grant Types", + "Client:AllowedAccessTokensViaBrowser": "Allowed Access Tokens Via Browser", + "Client:IdentityTokenLifetime": "Identity Token Lifetime(s)", + "Client:AccessTokenLifetime": "Access Token Lifetime(s)", + "Client:AuthorizationCodeLifetime": "Authorization Code Lifetime(s)", + "Client:AbsoluteRefreshTokenLifetime": "Absolute Refresh Token Lifetime(s)", + "Client:SlidingRefreshTokenLifetime": "Sliding Refresh Token Lifetime(s)", + "Client:DeviceCodeLifetime": "Device Code Lifetime(s)", + "Client:ClientClaimsPrefix": "Client Claims Prefix", + "Client:FrontChannelLogoutUri": "Front Channel Logout Uri", + "Client:FrontChannelLogoutSessionRequired": "Front Channel Logout Session Required", + "Client:BackChannelLogoutUri": "Back Channel Logout Uri", + "Client:BackChannelLogoutSessionRequired": "Back Channel Logout Session Required", + "Client:EnableLocalLogin": "Enable Local Login", + "Client:PostLogoutRedirectUris": "Post Logout Redirect Uris", + "Client:IdentityProviderRestrictions": "Identity Provider Restrictions", + "Client:UserSsoLifetime": "User Sso Lifetime", + "Client:AccessTokenType": "AccessToken Type", + "Client:RefreshTokenUsage": "Refresh Token Usage", + "Client:RefreshTokenExpiration": "RefreshToken Expiration", + "Client:AllowedCorsOrigins": "Allowed Cors Origins", + "Client:UpdateAccessTokenClaimsOnRefresh": "Update AccessToken Claims On Refresh", + "Client:IncludeJwtId": "Include Jwt Id", + "Client:AlwaysSendClientClaims": "Always Send Client Claims", + "Client:AlwaysIncludeUserClaimsInIdToken": "Always Include User Claims In Id Token", + "Client:PairWiseSubjectSalt": "Pair Wise Subject Salt", + "Client:RequireConsent": "Require Consent", + "Client:AllowRememberConsent": "Allow Remember Consent", + "Client:ClientUri": "Client Uri", + "Client:LogoUri": "Logo Uri", + "Client:UserCodeType": "User Code Type", + "Claims": "Claims", + "Claims:New": "Add New", + "Claims:Delete": "Delete", + "Claims:Type": "Type", + "Claims:Value": "Value", + "Propertites": "Propertites", + "Propertites:New": "Add New", + "Propertites:Key": "Key", + "Propertites:Value": "Value", + "Propertites:Delete": "Delete", + "Propertites:DuplicateKey": "Property already exists and cannot add duplicates!", + "Permissions": "Permissions" } } \ No newline at end of file diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/zh-Hans.json b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/zh-Hans.json index 9b2fe7010..6a0b008f0 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/Localization/Resources/zh-Hans.json @@ -5,19 +5,15 @@ "Permissions:Create": "新增", "Permissions:Update": "修改", "Permissions:Clone": "克隆", - "Permissions:Enabled": "启用", - "Permissions:Disabled": "停用", "Permissions:Delete": "删除", + "Permissions:ManageClaims": "管理声明", + "Permissions:ManageSecrets": "管理密钥", + "Permissions:ManageScopes": "管理作用域", + "Permissions:ManageProperties": "管理属性", "Permissions:ManagePermissions": "更改权限", "Permissions:Clients": "客户端管理", - "Permissions:Clients:Secrets": "客户端密钥", - "Permissions:Clients:Properties": "客户端属性", - "Permissions:Clients:Claims": "客户端声明", "Permissions:ApiResources": "Api资源管理", - "Permissions:ApiResources:Scope": "授权范围", - "Permissions:ApiResources:Secrets": "Api密钥", "Permissions:IdentityResources": "身份资源管理", - "Permissions:IdentityResources:Properties": "身份资源属性", "ClientIdExisted": "客户端标识: {0} 已经存在!", "ApiResourceNameExisted": "Api资源: {0} 已经存在!", "IdentityResourceNameExisted": "身份资源: {0} 已经存在!", @@ -26,6 +22,106 @@ "ClientSecretNotFound": "客户端密钥: {0} 不存在!", "ClientPropertyNotFound": "客户端属性: {0} 不存在!", "IdentityResourcePropertyNotFound": "身份资源属性: {0} 不存在!", - "EncryptionNotImplemented": "加密类型: {0} 未实现!" + "EncryptionNotImplemented": "加密类型: {0} 未实现!", + "Basics": "基本信息", + "Authentication": "认证/注销", + "Token": "令牌", + "Consent": "同意屏幕", + "DeviceFlow": "设备流程", + "Advanced": "高级", + "Resource:Enabled": "启用资源", + "Resource:New": "添加新资源", + "Resource:Edit": "编辑资源", + "Resource:Delete": "删除资源", + "Resource:WillDelete": "资源:{0} 将被删除", + "Resource:Name": "资源 - {0}", + "Resource:Api": "Api 资源", + "Resource:Identity": "身份资源", + "UserClaim": "用户声明", + "NoClaim": "未拥有声明", + "ExistsClaim": "已拥有声明", + "Scope": "作用域", + "Secret": "密钥", + "Name": "名称", + "DisplayName": "显示名称", + "Description": "描述", + "Required": "必要", + "Emphasize": "强调", + "ShowInDiscoveryDocument": "在发现文档中显示", + "Expiration": "过期", + "Scope:New": "添加新作用域", + "Scope:Delete": "删除作用域", + "Secret:New": "添加新密钥", + "Secret:Type": "密钥类型", + "Secret:HashType": "哈希类型", + "Secret:HashTypeOnlySharedSecret": "哈希类型仅适用于 SharedSecret 类型", + "Secret:Value": "值", + "Client:Enabled": "启用客户端", + "Client:New": "添加新客户端", + "Client:Edit": "编辑客户端", + "Client:Delete": "删除客户端", + "Client:WillDelete": "客户端:{0} 将被删除", + "Client:Name": "客户端 - {0}", + "Client:Id": "客户端标识", + "Client:Clone": "克隆客户端", + "Clone:CopyAllowedGrantType": "复制客户端授权类型", + "Clone:CopyRedirectUri": "复制客户端重定向 Uri", + "Clone:CopyAllowedScope": "复制客户端作用域", + "Clone:CopyClaim": "复制客户端声明", + "Clone:CopySecret": "复制客户端密钥", + "Clone:CopyAllowedCorsOrigin": "复制客户端跨域来源", + "Clone:CopyPostLogoutRedirectUri": "复制客户端注销重定向 Uri", + "Clone:CopyProperties": "复制客户端属性", + "Clone:CopyIdentityProviderRestriction": "复制身份提供程序限制", + "Client:ProtocolType": "协议类型", + "Client:RequiredClientSecret": "需要客户端密钥", + "Client:RequiredPkce": "需要 Pkce", + "Client:AllowedPlainTextPkce": "允许纯文本 Pkce", + "Client:AllowedOfflineAccess": "允许离线访问", + "Client:AllowedScopes": "允许的作用域", + "Client:RedirectUris": "重定向 Uri", + "Client:AllowedGrantTypes": "允许的授权类型", + "Client:AllowedAccessTokensViaBrowser": "允许通过浏览器访问令牌", + "Client:IdentityTokenLifetime": "身份令牌有效期(s)", + "Client:AccessTokenLifetime": "访问令牌有效期(s)", + "Client:AuthorizationCodeLifetime": "授权码有效期(s)", + "Client:AbsoluteRefreshTokenLifetime": "绝对刷新令牌有效期(s)", + "Client:SlidingRefreshTokenLifetime": "滚动刷新令牌有效期(s)", + "Client:DeviceCodeLifetime": "设备授权码有效期(s)", + "Client:ClientClaimsPrefix": "客户端声明前缀", + "Client:FrontChannelLogoutUri": "前端通道注销 Uri", + "Client:FrontChannelLogoutSessionRequired": "需要前端通道注销会话", + "Client:BackChannelLogoutUri": "后端通道退出 Uri", + "Client:BackChannelLogoutSessionRequired": "需要后端通道注销会话", + "Client:EnableLocalLogin": "启用本地登录", + "Client:PostLogoutRedirectUris": "注销重定向 Uri", + "Client:IdentityProviderRestrictions": "身份提供程序限制", + "Client:UserSsoLifetime": "用户 SSO 生命周期", + "Client:AccessTokenType": "访问令牌类型", + "Client:RefreshTokenUsage": "刷新令牌使用情况", + "Client:RefreshTokenExpiration": "刷新令牌过期方式", + "Client:AllowedCorsOrigins": "允许跨域来源", + "Client:UpdateAccessTokenClaimsOnRefresh": "刷新时更新访问令牌声明", + "Client:IncludeJwtId": "包括 Jwt 标识", + "Client:AlwaysSendClientClaims": "始终发送客户端声明", + "Client:AlwaysIncludeUserClaimsInIdToken": "始终在标识令牌中包含用户声明", + "Client:PairWiseSubjectSalt": "配对主体盐", + "Client:RequireConsent": "需要同意", + "Client:AllowRememberConsent": "允许记住同意", + "Client:ClientUri": "客户端 Uri", + "Client:LogoUri": "徽标 Uri", + "Client:UserCodeType": "用户代码类型", + "Claims": "声明", + "Claims:New": "添加新声明", + "Claims:Delete": "删除声明", + "Claims:Type": "声明类型", + "Claims:Value": "值", + "Propertites": "属性", + "Propertites:New": "添加新属性", + "Propertites:Key": "属性名称", + "Propertites:Value": "值", + "Propertites:Delete": "删除属性", + "Propertites:DuplicateKey": "属性已经存在,不能添加重复项!", + "Permissions": "权限" } } \ No newline at end of file diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/SecretBaseDto.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/SecretBaseDto.cs index 1dc467e4a..e0fee6baf 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/SecretBaseDto.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN/Abp/IdentityServer/SecretBaseDto.cs @@ -1,9 +1,8 @@ using System; -using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.IdentityServer { - public abstract class SecretBaseDto : EntityDto + public class SecretBaseDto { public string Type { get; set; } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAppServiceBase.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAppServiceBase.cs index fecf623ad..1f4387577 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAppServiceBase.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAppServiceBase.cs @@ -1,13 +1,22 @@ -using Volo.Abp.Application.Services; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.IdentityServer.Localization; namespace LINGYUN.Abp.IdentityServer { public abstract class AbpIdentityServerAppServiceBase : ApplicationService { + private IPermissionChecker _permissionChecker; + protected IPermissionChecker PermissionChecker => LazyGetRequiredService(ref _permissionChecker); protected AbpIdentityServerAppServiceBase() { LocalizationResource = typeof(AbpIdentityServerResource); } + + protected virtual async Task IsGrantAsync(string policy) + { + return await PermissionChecker.IsGrantedAsync(policy); + } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAutoMapperProfile.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAutoMapperProfile.cs index 1251a2262..6c2f7ae91 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAutoMapperProfile.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/AbpIdentityServerAutoMapperProfile.cs @@ -3,6 +3,7 @@ using LINGYUN.Abp.IdentityServer.ApiResources; using LINGYUN.Abp.IdentityServer.Clients; using LINGYUN.Abp.IdentityServer.IdentityResources; using System.Collections.Generic; +using System.Linq; using Volo.Abp.IdentityServer.ApiResources; using Volo.Abp.IdentityServer.Clients; using Volo.Abp.IdentityServer.IdentityResources; @@ -15,36 +16,33 @@ namespace LINGYUN.Abp.IdentityServer { CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); + CreateMap, Dictionary>() + .ConstructUsing((props, ctx) => + { + var properties = new Dictionary(); + foreach (var prop in props) + { + properties.Add(prop.Key, prop.Value); + } + return properties; + }); + CreateMap() + .ForMember(dto => dto.AllowedCorsOrigins, map => map.MapFrom(client => client.AllowedCorsOrigins.Select(origin => origin.Origin).ToList())) + .ForMember(dto => dto.AllowedGrantTypes, map => map.MapFrom(client => client.AllowedGrantTypes.Select(grantType => grantType.GrantType).ToList())) + .ForMember(dto => dto.AllowedScopes, map => map.MapFrom(client => client.AllowedScopes.Select(scope => scope.Scope).ToList())) + .ForMember(dto => dto.IdentityProviderRestrictions, map => map.MapFrom(client => client.IdentityProviderRestrictions.Select(provider => provider.Provider).ToList())) + .ForMember(dto => dto.PostLogoutRedirectUris, map => map.MapFrom(client => client.PostLogoutRedirectUris.Select(uri => uri.PostLogoutRedirectUri).ToList())) + .ForMember(dto => dto.RedirectUris, map => map.MapFrom(client => client.RedirectUris.Select(uri => uri.RedirectUri).ToList())); CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); + CreateMap() + .ForMember(dto => dto.UserClaims, map => map.MapFrom(src => src.UserClaims.Select(claim => claim.Type).ToList())) + .MapExtraProperties(); - CreateMap(); CreateMap() - .ForMember(dto => dto.Properties, map => map.MapFrom((src, d) => - { - var properties = new List(); - foreach (var property in src.Properties) - { - properties.Add(new IdentityResourcePropertyDto - { - Key = property.Key, - Value = property.Value - }); - } - return properties; - })); + .ForMember(dto => dto.UserClaims, map => map.MapFrom(src => src.UserClaims.Select(claim => claim.Type).ToList())) + .MapExtraProperties(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceAppService.cs index 5b402f61f..c9c9e540d 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceAppService.cs @@ -1,11 +1,12 @@ using IdentityServer4; using IdentityServer4.Models; using Microsoft.AspNetCore.Authorization; +using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; -using Volo.Abp.IdentityServer.ApiResources; using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; namespace LINGYUN.Abp.IdentityServer.ApiResources @@ -21,18 +22,19 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources ApiResourceRepository = apiResourceRepository; } - public virtual async Task GetAsync(ApiResourceGetByIdInputDto apiResourceGetById) + public virtual async Task GetAsync(Guid id) { - var apiResource = await ApiResourceRepository.GetAsync(apiResourceGetById.Id); + var apiResource = await ApiResourceRepository.GetAsync(id); return ObjectMapper.Map(apiResource); } - public virtual async Task> GetAsync(ApiResourceGetByPagedInputDto apiResourceGetByPaged) + public virtual async Task> GetListAsync(ApiResourceGetByPagedInputDto input) { - var apiResources = await ApiResourceRepository.GetListAsync(apiResourceGetByPaged.Sorting, - apiResourceGetByPaged.SkipCount, apiResourceGetByPaged.MaxResultCount, - apiResourceGetByPaged.Filter); + var apiResources = await ApiResourceRepository.GetListAsync(input.Sorting, + input.SkipCount, input.MaxResultCount, + input.Filter); + // 未加Filter过滤器? 结果数不准 var apiResourceCount = await ApiResourceRepository.GetCountAsync(); return new PagedResultDto(apiResourceCount, @@ -40,102 +42,144 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources } [Authorize(AbpIdentityServerPermissions.ApiResources.Create)] - public virtual async Task CreateAsync(ApiResourceCreateDto apiResourceCreate) + public virtual async Task CreateAsync(ApiResourceCreateDto input) { - var apiResourceExists = await ApiResourceRepository.CheckNameExistAsync(apiResourceCreate.Name); + var apiResourceExists = await ApiResourceRepository.CheckNameExistAsync(input.Name); if (apiResourceExists) { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.ApiResourceNameExisted, apiResourceCreate.Name]); + throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.ApiResourceNameExisted, input.Name]); } - var apiResource = new ApiResource(GuidGenerator.Create(), apiResourceCreate.Name, - apiResourceCreate.DisplayName, apiResourceCreate.Description) + var apiResource = new ApiResource(GuidGenerator.Create(), input.Name, + input.DisplayName, input.Description) { - Enabled = apiResourceCreate.Enabled + Enabled = input.Enabled }; - foreach (var userClaim in apiResourceCreate.UserClaims) - { - apiResource.AddUserClaim(userClaim.Type); - } + await UpdateApiResourceByInputAsync(apiResource, input); + apiResource = await ApiResourceRepository.InsertAsync(apiResource); + + await CurrentUnitOfWork.SaveChangesAsync(); + return ObjectMapper.Map(apiResource); } [Authorize(AbpIdentityServerPermissions.ApiResources.Update)] - public virtual async Task UpdateAsync(ApiResourceUpdateDto apiResourceUpdate) + public virtual async Task UpdateAsync(Guid id, ApiResourceUpdateDto input) { - var apiResource = await ApiResourceRepository.GetAsync(apiResourceUpdate.Id); - apiResource.DisplayName = apiResourceUpdate.DisplayName ?? apiResource.DisplayName; - apiResource.Description = apiResourceUpdate.Description ?? apiResource.Description; - apiResource.Enabled = apiResourceUpdate.Enabled; + var apiResource = await ApiResourceRepository.GetAsync(id); + apiResource.DisplayName = input.DisplayName ?? apiResource.DisplayName; + apiResource.Description = input.Description ?? apiResource.Description; + apiResource.Enabled = input.Enabled; + + await UpdateApiResourceByInputAsync(apiResource, input); - apiResource.RemoveAllUserClaims(); - foreach (var userClaim in apiResourceUpdate.UserClaims) - { - apiResource.AddUserClaim(userClaim.Type); - } apiResource = await ApiResourceRepository.UpdateAsync(apiResource); + + await CurrentUnitOfWork.SaveChangesAsync(); + return ObjectMapper.Map(apiResource); } [Authorize(AbpIdentityServerPermissions.ApiResources.Delete)] - public virtual async Task DeleteAsync(ApiResourceGetByIdInputDto apiResourceGetById) + public virtual async Task DeleteAsync(Guid id) { - var apiResource = await ApiResourceRepository.GetAsync(apiResourceGetById.Id); + var apiResource = await ApiResourceRepository.GetAsync(id); await ApiResourceRepository.DeleteAsync(apiResource); + + await CurrentUnitOfWork.SaveChangesAsync(); } - [Authorize(AbpIdentityServerPermissions.ApiResources.Secrets.Create)] - public virtual async Task AddSecretAsync(ApiSecretCreateDto apiSecretCreate) + protected virtual async Task UpdateApiResourceByInputAsync(ApiResource apiResource, ApiResourceCreateOrUpdateDto input) { - var apiResource = await ApiResourceRepository.GetAsync(apiSecretCreate.ApiResourceId); - var apiSecretValue = apiSecretCreate.Value; - var apiResourceSecret = apiResource.FindSecret(apiSecretValue, apiSecretCreate.Type); - if(apiResourceSecret == null) + if (await IsGrantAsync(AbpIdentityServerPermissions.ApiResources.ManageClaims)) { - if (IdentityServerConstants.SecretTypes.SharedSecret.Equals(apiSecretCreate.Type)) + // 删除不存在的UserClaim + apiResource.UserClaims.RemoveAll(claim => !input.UserClaims.Contains(claim.Type)); + foreach (var inputClaim in input.UserClaims) { - if (apiSecretCreate.HashType == HashType.Sha256) - { - apiSecretValue = apiSecretCreate.Value.Sha256(); - } - else if (apiSecretCreate.HashType == HashType.Sha512) + var userClaim = apiResource.FindClaim(inputClaim); + if (userClaim == null) { - apiSecretValue = apiSecretCreate.Value.Sha512(); + apiResource.AddUserClaim(inputClaim); } } - apiResource.AddSecret(apiSecretValue, apiSecretCreate.Expiration, apiSecretCreate.Type, apiSecretCreate.Description); - apiResourceSecret = apiResource.FindSecret(apiSecretValue, apiSecretCreate.Type); } - return ObjectMapper.Map(apiResourceSecret); - } + if (await IsGrantAsync(AbpIdentityServerPermissions.ApiResources.ManageScopes)) + { + // 删除不存在的Scope + apiResource.Scopes.RemoveAll(scope => !input.Scopes.Any(inputScope => scope.Name == inputScope.Name)); + foreach (var inputScope in input.Scopes) + { + var scope = apiResource.FindScope(inputScope.Name); + if (scope == null) + { + scope = apiResource.AddScope( + inputScope.Name, inputScope.DisplayName, inputScope.Description, + inputScope.Required, inputScope.Emphasize, inputScope.ShowInDiscoveryDocument); + } + else + { + scope.Required = inputScope.Required; + scope.Emphasize = inputScope.Emphasize; + scope.Description = inputScope.Description; + scope.DisplayName = inputScope.DisplayName; + scope.ShowInDiscoveryDocument = inputScope.ShowInDiscoveryDocument; + // 删除不存在的ScopeUserClaim + scope.UserClaims.RemoveAll(claim => !inputScope.UserClaims.Contains(claim.Type)); + } - [Authorize(AbpIdentityServerPermissions.ApiResources.Secrets.Delete)] - public virtual async Task DeleteSecretAsync(ApiSecretGetByTypeInputDto apiSecretGetByType) - { - var apiResource = await ApiResourceRepository.GetAsync(apiSecretGetByType.ApiResourceId); - apiResource.RemoveSecret(apiSecretGetByType.Value, apiSecretGetByType.Type); - } + foreach (var inputScopeClaim in inputScope.UserClaims) + { + var scopeUserClaim = scope.FindClaim(inputScopeClaim); + if (scopeUserClaim == null) + { + scope.AddUserClaim(inputScopeClaim); + } + } + } + } - [Authorize(AbpIdentityServerPermissions.ApiResources.Scope.Create)] - public virtual async Task AddScopeAsync(ApiScopeCreateDto apiScopeCreate) - { - var apiResource = await ApiResourceRepository.GetAsync(apiScopeCreate.ApiResourceId); - var apiResourceScope = apiResource.FindScope(apiScopeCreate.Name); - if (apiResourceScope == null) + if (await IsGrantAsync(AbpIdentityServerPermissions.ApiResources.ManageSecrets)) { - apiResource.AddScope(apiScopeCreate.Name, apiScopeCreate.DisplayName, apiScopeCreate.Description, - apiScopeCreate.Required, apiScopeCreate.Emphasize, apiScopeCreate.ShowInDiscoveryDocument); - apiResourceScope = apiResource.FindScope(apiScopeCreate.Name); + // 删除不存在的Secret + apiResource.Secrets.RemoveAll(secret => !input.Secrets.Any(inputSecret => secret.Type == inputSecret.Type && secret.Value == inputSecret.Value)); + foreach (var inputSecret in input.Secrets) + { + // 第一次重复校验已经加密过的字符串 + if (apiResource.FindSecret(inputSecret.Value, inputSecret.Type) == null) + { + var apiSecretValue = inputSecret.Value; + if (IdentityServerConstants.SecretTypes.SharedSecret.Equals(inputSecret.Type)) + { + if (inputSecret.HashType == HashType.Sha256) + { + apiSecretValue = inputSecret.Value.Sha256(); + } + else if (inputSecret.HashType == HashType.Sha512) + { + apiSecretValue = inputSecret.Value.Sha512(); + } + } + // 加密之后还需要做一次校验 避免出现重复值 + var secret = apiResource.FindSecret(apiSecretValue, inputSecret.Type); + if (secret == null) + { + apiResource.AddSecret(apiSecretValue, inputSecret.Expiration, inputSecret.Type, inputSecret.Description); + } + } + } } - return ObjectMapper.Map(apiResourceScope); - } - [Authorize(AbpIdentityServerPermissions.ApiResources.Scope.Delete)] - public virtual async Task DeleteScopeAsync(ApiScopeGetByNameInputDto apiScopeGetByName) - { - var apiResource = await ApiResourceRepository.GetAsync(apiScopeGetByName.ApiResourceId); - apiResource.RemoveScope(apiScopeGetByName.Name); + if (await IsGrantAsync(AbpIdentityServerPermissions.ApiResources.ManageProperties)) + { + // 删除不存在的属性 + apiResource.Properties.RemoveAll(scope => !input.Properties.ContainsKey(scope.Key)); + foreach (var property in input.Properties) + { + apiResource.Properties[property.Key] = property.Value; + } + } } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/Clients/ClientAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/Clients/ClientAppService.cs index 091c9988a..cdb6571f1 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/Clients/ClientAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/Clients/ClientAppService.cs @@ -1,6 +1,9 @@ -using IdentityServer4; +using LINGYUN.Abp.IdentityServer.ApiResources; +using LINGYUN.Abp.IdentityServer.IdentityResources; +using IdentityServer4; using IdentityServer4.Models; using Microsoft.AspNetCore.Authorization; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -15,65 +18,17 @@ namespace LINGYUN.Abp.IdentityServer.Clients public class ClientAppService : AbpIdentityServerAppServiceBase, IClientAppService { protected IClientRepository ClientRepository { get; } + protected IApiResourceRepository ApiResourceRepository { get; } + protected IIdentityResourceRepository IdentityResourceRepository { get; } - public ClientAppService(IClientRepository clientRepository) + public ClientAppService( + IClientRepository clientRepository, + IApiResourceRepository apiResourceRepository, + IIdentityResourceRepository identityResourceRepository) { ClientRepository = clientRepository; - } - - [Authorize(AbpIdentityServerPermissions.Clients.Claims.Create)] - public virtual async Task AddClaimAsync(ClientClaimCreateDto clientClaimCreate) - { - var client = await ClientRepository.GetAsync(clientClaimCreate.ClientId); - - client.AddClaim(clientClaimCreate.Value, clientClaimCreate.Type); - var clientClaim = client.FindClaim(clientClaimCreate.Value, clientClaimCreate.Type); - - return ObjectMapper.Map(clientClaim); - } - - [Authorize(AbpIdentityServerPermissions.Clients.Properties.Create)] - public virtual async Task AddPropertyAsync(ClientPropertyCreateDto clientPropertyCreate) - { - var client = await ClientRepository.GetAsync(clientPropertyCreate.ClientId); - - client.AddProperty(clientPropertyCreate.Key, clientPropertyCreate.Value); - var clientProperty = client.FindProperty(clientPropertyCreate.Key, clientPropertyCreate.Value); - - return ObjectMapper.Map(clientProperty); - } - - [Authorize(AbpIdentityServerPermissions.Clients.Secrets.Create)] - public virtual async Task AddSecretAsync(ClientSecretCreateDto clientSecretCreate) - { - var client = await ClientRepository.GetAsync(clientSecretCreate.ClientId); - - var clientSecretValue = clientSecretCreate.Value; - - // 如果是 SharedSecret 类型的密钥 - // 采用 IdentityServer4 服务器扩展方法加密 - if (IdentityServerConstants.SecretTypes.SharedSecret.Equals(clientSecretCreate.Type)) - { - if(clientSecretCreate.HashType == HashType.Sha256) - { - clientSecretValue = clientSecretCreate.Value.Sha256(); - } - else if (clientSecretCreate.HashType == HashType.Sha512) - { - clientSecretValue = clientSecretCreate.Value.Sha512(); - } - } - else - { - // 其他类型的服务器加密方式暂时不提供 - throw new UserFriendlyException(L["EncryptionNotImplemented", clientSecretCreate.Type]); - } - client.AddSecret(clientSecretValue, clientSecretCreate.Expiration, - clientSecretCreate.Type, clientSecretCreate.Description); - - var clientSecret = client.FindSecret(clientSecretValue, clientSecretCreate.Type); - - return ObjectMapper.Map(clientSecret); + ApiResourceRepository = apiResourceRepository; + IdentityResourceRepository = identityResourceRepository; } [Authorize(AbpIdentityServerPermissions.Clients.Create)] @@ -91,58 +46,37 @@ namespace LINGYUN.Abp.IdentityServer.Clients }; foreach (var grantType in clientCreate.AllowedGrantTypes) { - client.AddGrantType(grantType.GrantType); + client.AddGrantType(grantType); } - client = await ClientRepository.InsertAsync(client, true); + client = await ClientRepository.InsertAsync(client); + + await CurrentUnitOfWork.SaveChangesAsync(); return ObjectMapper.Map(client); } [Authorize(AbpIdentityServerPermissions.Clients.Delete)] - public virtual async Task DeleteAsync(ClientGetByIdInputDto clientGetByIdInput) + public virtual async Task DeleteAsync(Guid id) { - await ClientRepository.DeleteAsync(clientGetByIdInput.Id); - } - - [Authorize(AbpIdentityServerPermissions.Clients.Claims.Delete)] - public virtual async Task DeleteClaimAsync(ClientClaimGetByKeyInputDto clientClaimGetByKey) - { - var client = await ClientRepository.GetAsync(clientClaimGetByKey.ClientId); - client.RemoveClaim(clientClaimGetByKey.Value, clientClaimGetByKey.Type); - await ClientRepository.UpdateAsync(client); - } + var client = await ClientRepository.GetAsync(id); + await ClientRepository.DeleteAsync(client); - [Authorize(AbpIdentityServerPermissions.Clients.Properties.Delete)] - public virtual async Task DeletePropertyAsync(ClientPropertyGetByKeyDto clientPropertyGetByKey) - { - var client = await ClientRepository.GetAsync(clientPropertyGetByKey.ClientId); - client.RemoveProperty(clientPropertyGetByKey.Key, clientPropertyGetByKey.Value); - await ClientRepository.UpdateAsync(client); + await CurrentUnitOfWork.SaveChangesAsync(); } - [Authorize(AbpIdentityServerPermissions.Clients.Secrets.Delete)] - public virtual async Task DeleteSecretAsync(ClientSecretGetByTypeDto clientSecretGetByType) + public virtual async Task GetAsync(Guid id) { - var client = await ClientRepository.GetAsync(clientSecretGetByType.ClientId); - client.RemoveSecret(clientSecretGetByType.Value, clientSecretGetByType.Type); - await ClientRepository.UpdateAsync(client); - } - - - public virtual async Task GetAsync(ClientGetByIdInputDto clientGetById) - { - var client = await ClientRepository.GetAsync(clientGetById.Id); + var client = await ClientRepository.GetAsync(id); return ObjectMapper.Map(client); } - public virtual async Task> GetAsync(ClientGetByPagedInputDto clientGetByPaged) + public virtual async Task> GetListAsync(ClientGetByPagedDto input) { - // Abp官方IdentityServer项目不支持Filter过滤... - var clients = await ClientRepository.GetListAsync(clientGetByPaged.Sorting, - clientGetByPaged.SkipCount, clientGetByPaged.MaxResultCount, - clientGetByPaged.Filter, true); + var clients = await ClientRepository.GetListAsync(input.Sorting, + input.SkipCount, input.MaxResultCount, + input.Filter); var clientCount = await ClientRepository.GetCountAsync(); @@ -151,127 +85,243 @@ namespace LINGYUN.Abp.IdentityServer.Clients } [Authorize(AbpIdentityServerPermissions.Clients.Update)] - public virtual async Task UpdateAsync(ClientUpdateInputDto clientUpdateInput) + public virtual async Task UpdateAsync(Guid id, ClientUpdateDto input) { - var client = await ClientRepository.GetAsync(clientUpdateInput.Id); - - #region Basic Property - client.ConcurrencyStamp = clientUpdateInput.Client.ConcurrencyStamp; - client.ClientId = clientUpdateInput.Client.ClientId ?? client.ClientId; - client.ClientUri = clientUpdateInput.Client.ClientUri ?? client.ClientUri; - client.ClientName = clientUpdateInput.Client.ClientName ?? client.ClientName; - client.AbsoluteRefreshTokenLifetime = clientUpdateInput.Client.AbsoluteRefreshTokenLifetime - ?? client.AbsoluteRefreshTokenLifetime; - client.AccessTokenLifetime = clientUpdateInput.Client.AccessTokenLifetime - ?? client.AccessTokenLifetime; - client.AccessTokenType = clientUpdateInput.Client.AccessTokenType ?? client.AccessTokenType; - client.AllowAccessTokensViaBrowser = clientUpdateInput.Client.AllowAccessTokensViaBrowser - ?? client.AllowAccessTokensViaBrowser; - client.AllowOfflineAccess = clientUpdateInput.Client.AllowOfflineAccess - ?? client.AllowOfflineAccess; - client.AllowPlainTextPkce = clientUpdateInput.Client.AllowPlainTextPkce ?? client.AllowPlainTextPkce; - client.AllowRememberConsent = clientUpdateInput.Client.AllowRememberConsent ?? client.AllowRememberConsent; - client.AlwaysIncludeUserClaimsInIdToken = clientUpdateInput.Client.AlwaysIncludeUserClaimsInIdToken - ?? client.AlwaysIncludeUserClaimsInIdToken; - client.AlwaysSendClientClaims = clientUpdateInput.Client.AlwaysSendClientClaims ?? client.AlwaysSendClientClaims; - client.AuthorizationCodeLifetime = clientUpdateInput.Client.AuthorizationCodeLifetime - ?? client.AuthorizationCodeLifetime; - client.BackChannelLogoutSessionRequired = clientUpdateInput.Client.BackChannelLogoutSessionRequired - ?? client.BackChannelLogoutSessionRequired; - - client.BackChannelLogoutUri = clientUpdateInput.Client.BackChannelLogoutUri - ?? client.BackChannelLogoutUri; - client.ClientClaimsPrefix = clientUpdateInput.Client.ClientClaimsPrefix ?? client.ClientClaimsPrefix; - client.ConsentLifetime = clientUpdateInput.Client.ConsentLifetime ?? client.ConsentLifetime; - client.Description = clientUpdateInput.Client.Description ?? client.Description; - client.DeviceCodeLifetime = clientUpdateInput.Client.DeviceCodeLifetime ?? client.DeviceCodeLifetime; - client.Enabled = clientUpdateInput.Client.Enabled ?? client.Enabled; - client.EnableLocalLogin = clientUpdateInput.Client.EnableLocalLogin ?? client.EnableLocalLogin; - client.FrontChannelLogoutSessionRequired = clientUpdateInput.Client.FrontChannelLogoutSessionRequired - ?? client.FrontChannelLogoutSessionRequired; - client.FrontChannelLogoutUri = clientUpdateInput.Client.FrontChannelLogoutUri ?? client.FrontChannelLogoutUri; - - client.IdentityTokenLifetime = clientUpdateInput.Client.IdentityTokenLifetime ?? client.IdentityTokenLifetime; - client.IncludeJwtId = clientUpdateInput.Client.IncludeJwtId ?? client.IncludeJwtId; - client.LogoUri = clientUpdateInput.Client.LogoUri ?? client.LogoUri; - client.PairWiseSubjectSalt = clientUpdateInput.Client.PairWiseSubjectSalt ?? client.PairWiseSubjectSalt; - client.ProtocolType = clientUpdateInput.Client.ProtocolType ?? client.ProtocolType; - client.RefreshTokenExpiration = clientUpdateInput.Client.RefreshTokenExpiration ?? client.RefreshTokenExpiration; - client.RefreshTokenUsage = clientUpdateInput.Client.RefreshTokenUsage ?? client.RefreshTokenUsage; - client.RequireClientSecret = clientUpdateInput.Client.RequireClientSecret ?? client.RequireClientSecret; - client.RequireConsent = clientUpdateInput.Client.RequireConsent ?? client.RequireConsent; - - client.RequirePkce = clientUpdateInput.Client.RequirePkce ?? client.RequirePkce; - client.SlidingRefreshTokenLifetime = clientUpdateInput.Client.SlidingRefreshTokenLifetime - ?? client.SlidingRefreshTokenLifetime; - client.UpdateAccessTokenClaimsOnRefresh = clientUpdateInput.Client.UpdateAccessTokenClaimsOnRefresh - ?? client.UpdateAccessTokenClaimsOnRefresh; - - client.UserCodeType = clientUpdateInput.Client.UserCodeType ?? client.UserCodeType; - client.UserSsoLifetime = clientUpdateInput.Client.UserSsoLifetime ?? client.UserSsoLifetime; + var client = await ClientRepository.GetAsync(id); + + #region Basic + if (!string.Equals(client.ClientId, input.ClientId, StringComparison.InvariantCultureIgnoreCase)) + { + client.ClientId = input.ClientId; + } + if (!string.Equals(client.ClientUri, input.ClientUri, StringComparison.InvariantCultureIgnoreCase)) + { + client.ClientUri = input.ClientUri; + } + if (!string.Equals(client.ClientName, input.ClientName, StringComparison.InvariantCultureIgnoreCase)) + { + client.ClientName = input.ClientName; + } + if (!string.Equals(client.BackChannelLogoutUri, input.BackChannelLogoutUri, StringComparison.InvariantCultureIgnoreCase)) + { + client.BackChannelLogoutUri = input.BackChannelLogoutUri; + } + if (!string.Equals(client.FrontChannelLogoutUri, input.FrontChannelLogoutUri, StringComparison.InvariantCultureIgnoreCase)) + { + client.FrontChannelLogoutUri = input.FrontChannelLogoutUri; + } + if (!string.Equals(client.ClientClaimsPrefix, input.ClientClaimsPrefix, StringComparison.InvariantCultureIgnoreCase)) + { + client.ClientClaimsPrefix = input.ClientClaimsPrefix; + } + if (!string.Equals(client.Description, input.Description, StringComparison.InvariantCultureIgnoreCase)) + { + client.Description = input.Description; + } + if (!string.Equals(client.LogoUri, input.LogoUri, StringComparison.InvariantCultureIgnoreCase)) + { + client.LogoUri = input.LogoUri; + } + if (!string.Equals(client.UserCodeType, input.UserCodeType, StringComparison.InvariantCultureIgnoreCase)) + { + client.UserCodeType = input.UserCodeType; + } + if (!string.Equals(client.PairWiseSubjectSalt, input.PairWiseSubjectSalt, StringComparison.InvariantCultureIgnoreCase)) + { + client.PairWiseSubjectSalt = input.PairWiseSubjectSalt; + } + if (!string.Equals(client.ProtocolType, input.ProtocolType, StringComparison.InvariantCultureIgnoreCase)) + { + client.ProtocolType = input.ProtocolType; + } + client.AbsoluteRefreshTokenLifetime = input.AbsoluteRefreshTokenLifetime; + client.AccessTokenLifetime = input.AccessTokenLifetime; + client.AccessTokenType = input.AccessTokenType; + client.AllowAccessTokensViaBrowser = input.AllowAccessTokensViaBrowser; + client.AllowOfflineAccess = input.AllowOfflineAccess; + client.AllowPlainTextPkce = input.AllowPlainTextPkce; + client.AllowRememberConsent = input.AllowRememberConsent; + client.AlwaysIncludeUserClaimsInIdToken = input.AlwaysIncludeUserClaimsInIdToken; + client.AlwaysSendClientClaims = input.AlwaysSendClientClaims; + client.AuthorizationCodeLifetime = input.AuthorizationCodeLifetime; + client.BackChannelLogoutSessionRequired = input.BackChannelLogoutSessionRequired; + client.DeviceCodeLifetime = input.DeviceCodeLifetime; + client.ConsentLifetime = input.ConsentLifetime ?? client.ConsentLifetime; + client.Enabled = input.Enabled; + client.EnableLocalLogin = input.EnableLocalLogin; + client.FrontChannelLogoutSessionRequired = input.FrontChannelLogoutSessionRequired; + client.IdentityTokenLifetime = input.IdentityTokenLifetime; + client.IncludeJwtId = input.IncludeJwtId; + client.RefreshTokenExpiration = input.RefreshTokenExpiration; + client.RefreshTokenUsage = input.RefreshTokenUsage; + client.RequireClientSecret = input.RequireClientSecret; + client.RequireConsent = input.RequireConsent; + client.RequirePkce = input.RequirePkce; + client.SlidingRefreshTokenLifetime = input.SlidingRefreshTokenLifetime; + client.UpdateAccessTokenClaimsOnRefresh = input.UpdateAccessTokenClaimsOnRefresh; + client.UserSsoLifetime = input.UserSsoLifetime ?? client.UserSsoLifetime; #endregion #region AllowScope - - client.RemoveAllScopes(); - foreach (var scope in clientUpdateInput.Client.AllowedScopes) + // 删除未在身份资源和Api资源中的作用域 + client.AllowedScopes.RemoveAll(scope => !input.AllowedScopes.Contains(scope.Scope)); + foreach (var scope in input.AllowedScopes) { - client.AddScope(scope.Scope); + if (client.FindScope(scope) == null) + { + client.AddScope(scope); + } } #endregion #region RedirectUris - - client.RemoveAllRedirectUris(); - foreach (var redirect in clientUpdateInput.Client.RedirectUris) + // 删除不存在的uri + client.RedirectUris.RemoveAll(uri => !input.RedirectUris.Contains(uri.RedirectUri)); + foreach (var redirect in input.RedirectUris) { - client.AddRedirectUri(redirect.RedirectUri); + if (client.FindRedirectUri(redirect) != null) + { + client.AddRedirectUri(redirect); + } } #endregion #region AllowedGrantTypes - - client.RemoveAllAllowedGrantTypes(); - foreach (var grantType in clientUpdateInput.Client.AllowedGrantTypes) + // 删除不存在的验证类型 + client.AllowedGrantTypes.RemoveAll(grantType => !input.AllowedGrantTypes.Contains(grantType.GrantType)); + foreach (var grantType in input.AllowedGrantTypes) { - client.AddGrantType(grantType.GrantType); + if (client.FindGrantType(grantType) == null) + { + client.AddGrantType(grantType); + } } #endregion #region AllowedCorsOrigins - - client.RemoveAllCorsOrigins(); - foreach (var corgOrigin in clientUpdateInput.Client.AllowedCorsOrigins) + // 删除不存在的同源域名 + client.AllowedCorsOrigins.RemoveAll(corgOrigin => !input.AllowedCorsOrigins.Contains(corgOrigin.Origin)); + foreach (var corgOrigin in input.AllowedCorsOrigins) { - client.AddCorsOrigin(corgOrigin.Origin); + if (client.FindCorsOrigin(corgOrigin) == null) + { + client.AddCorsOrigin(corgOrigin); + } } #endregion #region PostLogoutRedirectUris - client.RemoveAllPostLogoutRedirectUris(); - foreach (var logoutRedirect in clientUpdateInput.Client.PostLogoutRedirectUris) + // 删除不存在的登录重定向域名 + client.PostLogoutRedirectUris.RemoveAll(uri => !input.PostLogoutRedirectUris.Contains(uri.PostLogoutRedirectUri)); + foreach (var logoutRedirectUri in input.PostLogoutRedirectUris) { - client.AddPostLogoutRedirectUri(logoutRedirect.PostLogoutRedirectUri); + if (client.FindPostLogoutRedirectUri(logoutRedirectUri) == null) + { + client.AddPostLogoutRedirectUri(logoutRedirectUri); + } } #endregion #region IdentityProviderRestrictions - client.RemoveAllIdentityProviderRestrictions(); - foreach (var provider in clientUpdateInput.Client.IdentityProviderRestrictions) + // 删除身份认证限制提供商 + client.IdentityProviderRestrictions.RemoveAll(provider => !input.IdentityProviderRestrictions.Contains(provider.Provider)); + foreach (var provider in input.IdentityProviderRestrictions) + { + if (client.FindIdentityProviderRestriction(provider) == null) + { + client.AddIdentityProviderRestriction(provider); + } + } + + #endregion + + #region Secrets + + if (await IsGrantAsync(AbpIdentityServerPermissions.Clients.ManageSecrets)) + { + // 移除已经不存在的客户端密钥 + client.ClientSecrets.RemoveAll(secret => !input.Secrets.Any(inputSecret => secret.Value == inputSecret.Value && secret.Type == inputSecret.Type)); + foreach (var inputSecret in input.Secrets) + { + // 先对加密过的进行过滤 + if (client.FindSecret(inputSecret.Value, inputSecret.Type) != null) + { + continue; + } + var inputSecretValue = inputSecret.Value; + // 如果是 SharedSecret 类型的密钥 + // 采用 IdentityServer4 服务器扩展方法加密 + if (IdentityServerConstants.SecretTypes.SharedSecret.Equals(inputSecret.Type)) + { + if (inputSecret.HashType == HashType.Sha256) + { + inputSecretValue = inputSecret.Value.Sha256(); + } + else if (inputSecret.HashType == HashType.Sha512) + { + inputSecretValue = inputSecret.Value.Sha512(); + } + } + else + { + throw new UserFriendlyException(L["EncryptionNotImplemented", inputSecret.Type]); + } + + var clientSecret = client.FindSecret(inputSecretValue, inputSecret.Type); + if (clientSecret == null) + { + client.AddSecret(inputSecretValue, inputSecret.Expiration, inputSecret.Type, inputSecret.Description); + } + } + } + + #endregion + + #region Properties + + if (await IsGrantAsync(AbpIdentityServerPermissions.Clients.ManageProperties)) { - client.AddIdentityProviderRestriction(provider.Provider); + // 移除不存在的属性 + client.Properties.RemoveAll(prop => !input.Properties.ContainsKey(prop.Key)); + foreach (var inputProp in input.Properties) + { + if (client.FindProperty(inputProp.Key, inputProp.Value) == null) + { + client.AddProperty(inputProp.Key, inputProp.Value); + } + } } + #endregion - client = await ClientRepository.UpdateAsync(client, true); + #region Claims + + if (await IsGrantAsync(AbpIdentityServerPermissions.Clients.ManageClaims)) + { + // 移除已经不存在的客户端声明 + client.Claims.RemoveAll(secret => !input.Claims.Any(inputClaim => secret.Value == inputClaim.Value && secret.Type == inputClaim.Type)); + foreach (var inputClaim in input.Claims) + { + if (client.FindClaim(inputClaim.Value, inputClaim.Type) == null) + { + client.AddClaim(inputClaim.Value, inputClaim.Type); + } + } + } + + #endregion + + client = await ClientRepository.UpdateAsync(client); + + await CurrentUnitOfWork.SaveChangesAsync(); return ObjectMapper.Map(client); } @@ -283,22 +333,23 @@ namespace LINGYUN.Abp.IdentityServer.Clients /// 实现参考 Skoruba.IdentityServer4.Admin 项目 /// https://github.com/skoruba/IdentityServer4.Admin.git /// - /// + /// + /// /// [Authorize(AbpIdentityServerPermissions.Clients.Clone)] - public virtual async Task CloneAsync(ClientCloneInputDto clientCloneInput) + public virtual async Task CloneAsync(Guid id, ClientCloneDto input) { - var clientIdExists = await ClientRepository.CheckClientIdExistAsync(clientCloneInput.ClientId); + var clientIdExists = await ClientRepository.CheckClientIdExistAsync(input.ClientId); if (clientIdExists) { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.ClientIdExisted, clientCloneInput.ClientId]); + throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.ClientIdExisted, input.ClientId]); } - var srcClient = await ClientRepository.GetAsync(clientCloneInput.SourceClientId); + var srcClient = await ClientRepository.GetAsync(id); - var client = new Client(GuidGenerator.Create(), clientCloneInput.ClientId) + var client = new Client(GuidGenerator.Create(), input.ClientId) { - ClientName = clientCloneInput.ClientName, - Description = clientCloneInput.Description, + ClientName = input.ClientName, + Description = input.Description, AbsoluteRefreshTokenLifetime = srcClient.AbsoluteRefreshTokenLifetime, AccessTokenLifetime = srcClient.AccessTokenLifetime, AccessTokenType = srcClient.AccessTokenType, @@ -338,56 +389,63 @@ namespace LINGYUN.Abp.IdentityServer.Clients UserSsoLifetime = srcClient.UserSsoLifetime }; - if (clientCloneInput.CopyAllowedCorsOrigin) + if (input.CopyAllowedCorsOrigin) { foreach(var corsOrigin in srcClient.AllowedCorsOrigins) { client.AddCorsOrigin(corsOrigin.Origin); } } - if (clientCloneInput.CopyAllowedGrantType) + if (input.CopyAllowedGrantType) { foreach (var grantType in srcClient.AllowedGrantTypes) { client.AddGrantType(grantType.GrantType); } } - if (clientCloneInput.CopyAllowedScope) + if (input.CopyAllowedScope) { foreach (var scope in srcClient.AllowedScopes) { client.AddScope(scope.Scope); } } - if (clientCloneInput.CopyClaim) + if (input.CopyClaim) { foreach (var claim in srcClient.Claims) { client.AddClaim(claim.Value, claim.Type); } } - if (clientCloneInput.CopyIdentityProviderRestriction) + if (input.CopySecret) + { + foreach (var secret in srcClient.ClientSecrets) + { + client.AddSecret(secret.Value, secret.Expiration, secret.Type, secret.Description); + } + } + if (input.CopyIdentityProviderRestriction) { foreach (var provider in srcClient.IdentityProviderRestrictions) { client.AddIdentityProviderRestriction(provider.Provider); } } - if (clientCloneInput.CopyPostLogoutRedirectUri) + if (input.CopyPostLogoutRedirectUri) { foreach (var uri in srcClient.PostLogoutRedirectUris) { client.AddPostLogoutRedirectUri(uri.PostLogoutRedirectUri); } } - if (clientCloneInput.CopyPropertie) + if (input.CopyPropertie) { foreach (var property in srcClient.Properties) { client.AddProperty(property.Key, property.Value); } } - if (clientCloneInput.CopyRedirectUri) + if (input.CopyRedirectUri) { foreach (var uri in srcClient.RedirectUris) { @@ -395,75 +453,40 @@ namespace LINGYUN.Abp.IdentityServer.Clients } } client = await ClientRepository.InsertAsync(client); + + await CurrentUnitOfWork.SaveChangesAsync(); + return ObjectMapper.Map(client); } - - [Authorize(AbpIdentityServerPermissions.Clients.Claims.Update)] - public virtual async Task UpdateClaimAsync(ClientClaimUpdateDto clientClaimUpdate) + /// + /// 查询可用的Api资源 + /// + /// + public virtual async Task> GetAssignableApiResourcesAsync() { - var client = await ClientRepository.GetAsync(clientClaimUpdate.ClientId); + var resourceNames = await ApiResourceRepository.GetNamesAsync(); - var clientClaim = client.Claims.FirstOrDefault(claim => claim.Type.Equals(clientClaimUpdate.Type)); - if(clientClaim == null) - { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.ClientClaimNotFound, clientClaimUpdate.Type]); - } - clientClaim.Value = clientClaimUpdate.Value; - - return ObjectMapper.Map(clientClaim); + return new ListResultDto(resourceNames); } - - [Authorize(AbpIdentityServerPermissions.Clients.Properties.Update)] - public virtual async Task UpdatePropertyAsync(ClientPropertyUpdateDto clientPropertyUpdate) + /// + /// 查询可用的身份资源 + /// + /// + public virtual async Task> GetAssignableIdentityResourcesAsync() { - var client = await ClientRepository.GetAsync(clientPropertyUpdate.ClientId); - - var clientProperty = client.Properties - .FirstOrDefault(property => property.Key.Equals(clientPropertyUpdate.Key)); - if (clientProperty == null) - { - throw new UserFriendlyException( - L[AbpIdentityServerErrorConsts.ClientPropertyNotFound, clientPropertyUpdate.Key]); - } - clientProperty.Value = clientPropertyUpdate.Value; + var resourceNames = await IdentityResourceRepository.GetNamesAsync(); - return ObjectMapper.Map(clientProperty); + return new ListResultDto(resourceNames); } - - [Authorize(AbpIdentityServerPermissions.Clients.Secrets.Update)] - public virtual async Task UpdateSecretAsync(ClientSecretUpdateDto clientSecretUpdate) + /// + /// 查询所有不重复的跨域地址 + /// + /// + public virtual async Task> GetAllDistinctAllowedCorsOriginsAsync() { - var client = await ClientRepository.GetAsync(clientSecretUpdate.ClientId); - - var clientSecret = client.ClientSecrets - .FirstOrDefault(secret => secret.Type.Equals(clientSecretUpdate.Type)); - if (clientSecret == null) - { - throw new UserFriendlyException( - L[AbpIdentityServerErrorConsts.ClientSecretNotFound, clientSecretUpdate.Type]); - } - var clientSecretValue = clientSecret.Value; - - // 如果是 SharedSecret 类型的密钥 - // 采用 IdentityServer4 服务器扩展方法加密 - if (IdentityServerConstants.SecretTypes.SharedSecret.Equals(clientSecretUpdate.Type)) - { - if (clientSecretUpdate.HashType == HashType.Sha256) - { - clientSecretValue = clientSecretUpdate.Value.Sha256(); - } - else if (clientSecretUpdate.HashType == HashType.Sha512) - { - clientSecretValue = clientSecretUpdate.Value.Sha512(); - } - } - else - { - throw new UserFriendlyException(L["EncryptionNotImplemented", clientSecretUpdate.Type]); - } - clientSecret.Value = clientSecretValue; + var corsOrigins = await ClientRepository.GetAllDistinctAllowedCorsOriginsAsync(); - return ObjectMapper.Map(clientSecret); + return new ListResultDto(corsOrigins); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceAppService.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceAppService.cs index fa444fd4e..38be28e9a 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceAppService.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceAppService.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Authorization; +using System; using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp; @@ -18,18 +19,18 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources IdentityResourceRepository = identityResourceRepository; } - public virtual async Task GetAsync(IdentityResourceGetByIdInputDto identityResourceGetById) + public virtual async Task GetAsync(Guid id) { - var identityResource = await IdentityResourceRepository.GetAsync(identityResourceGetById.Id); + var identityResource = await IdentityResourceRepository.GetAsync(id); return ObjectMapper.Map(identityResource); } - public virtual async Task> GetAsync(IdentityResourceGetByPagedInputDto identityResourceGetByPaged) + public virtual async Task> GetListAsync(IdentityResourceGetByPagedDto input) { - var identityResources = await IdentityResourceRepository.GetListAsync(identityResourceGetByPaged.Sorting, - identityResourceGetByPaged.SkipCount, identityResourceGetByPaged.MaxResultCount, - identityResourceGetByPaged.Filter, true); + var identityResources = await IdentityResourceRepository.GetListAsync(input.Sorting, + input.SkipCount, input.MaxResultCount, + input.Filter); var identityResourceCount = await IdentityResourceRepository.GetCountAsync(); return new PagedResultDto(identityResourceCount, @@ -37,86 +38,85 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources } [Authorize(AbpIdentityServerPermissions.IdentityResources.Create)] - public virtual async Task CreateAsync(IdentityResourceCreateDto identityResourceCreate) + public virtual async Task CreateAsync(IdentityResourceCreateOrUpdateDto input) { - var identityResourceExists = await IdentityResourceRepository.CheckNameExistAsync(identityResourceCreate.Name); + var identityResourceExists = await IdentityResourceRepository.CheckNameExistAsync(input.Name); if (identityResourceExists) { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.IdentityResourceNameExisted, identityResourceCreate.Name]); - } - var identityResource = new IdentityResource(GuidGenerator.Create(), identityResourceCreate.Name, identityResourceCreate.DisplayName, - identityResourceCreate.Description, identityResourceCreate.Enabled, identityResourceCreate.Required, identityResourceCreate.Emphasize, - identityResourceCreate.ShowInDiscoveryDocument); - foreach(var claim in identityResourceCreate.UserClaims) - { - identityResource.AddUserClaim(claim.Type); + throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.IdentityResourceNameExisted, input.Name]); } + var identityResource = new IdentityResource(GuidGenerator.Create(), input.Name, input.DisplayName, + input.Description, input.Enabled, input.Required, input.Emphasize, + input.ShowInDiscoveryDocument); + await UpdateApiResourceByInputAsync(identityResource, input); + + await CurrentUnitOfWork.SaveChangesAsync(); + identityResource = await IdentityResourceRepository.InsertAsync(identityResource); return ObjectMapper.Map(identityResource); } [Authorize(AbpIdentityServerPermissions.IdentityResources.Update)] - public virtual async Task UpdateAsync(IdentityResourceUpdateDto identityResourceUpdate) + public virtual async Task UpdateAsync(Guid id, IdentityResourceCreateOrUpdateDto input) { - var identityResource = await IdentityResourceRepository.GetAsync(identityResourceUpdate.Id); - identityResource.ConcurrencyStamp = identityResourceUpdate.ConcurrencyStamp; - identityResource.Name = identityResourceUpdate.Name ?? identityResource.Name; - identityResource.DisplayName = identityResourceUpdate.DisplayName ?? identityResource.DisplayName; - identityResource.Description = identityResourceUpdate.Description ?? identityResource.Description; - identityResource.Enabled = identityResourceUpdate.Enabled; - identityResource.Emphasize = identityResourceUpdate.Emphasize; - identityResource.ShowInDiscoveryDocument = identityResourceUpdate.ShowInDiscoveryDocument; - if (identityResourceUpdate.UserClaims.Count > 0) - { - identityResource.RemoveAllUserClaims(); - foreach (var claim in identityResourceUpdate.UserClaims) - { - identityResource.AddUserClaim(claim.Type); - } - } + var identityResource = await IdentityResourceRepository.GetAsync(id); + await UpdateApiResourceByInputAsync(identityResource, input); identityResource = await IdentityResourceRepository.UpdateAsync(identityResource); + await CurrentUnitOfWork.SaveChangesAsync(); + return ObjectMapper.Map(identityResource); } [Authorize(AbpIdentityServerPermissions.IdentityResources.Delete)] - public virtual async Task DeleteAsync(IdentityResourceGetByIdInputDto identityResourceGetById) + public virtual async Task DeleteAsync(Guid id) { - await IdentityResourceRepository.DeleteAsync(identityResourceGetById.Id); + await IdentityResourceRepository.DeleteAsync(id); } - [Authorize(AbpIdentityServerPermissions.IdentityResources.Properties.Create)] - public virtual async Task AddPropertyAsync(IdentityResourcePropertyCreateDto identityResourcePropertyCreate) + protected virtual async Task UpdateApiResourceByInputAsync(IdentityResource identityResource, IdentityResourceCreateOrUpdateDto input) { - var identityResource = await IdentityResourceRepository.GetAsync(identityResourcePropertyCreate.IdentityResourceId); - - if (identityResource.Properties.ContainsKey(identityResourcePropertyCreate.Key)) + if (!string.Equals(identityResource.Name, input.Name, StringComparison.InvariantCultureIgnoreCase)) { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.IdentityResourcePropertyExisted, identityResourcePropertyCreate.Key]); + identityResource.Name = input.Name; } - identityResource.ConcurrencyStamp = identityResourcePropertyCreate.ConcurrencyStamp; - identityResource.Properties.Add(identityResourcePropertyCreate.Key, identityResourcePropertyCreate.Value); - - await IdentityResourceRepository.UpdateAsync(identityResource); - return new IdentityResourcePropertyDto + if (!string.Equals(identityResource.Description, input.Description, StringComparison.InvariantCultureIgnoreCase)) { - Key = identityResourcePropertyCreate.Key, - Value = identityResourcePropertyCreate.Value - }; - } + identityResource.Description = input.Description; + } + if (!string.Equals(identityResource.DisplayName, input.DisplayName, StringComparison.InvariantCultureIgnoreCase)) + { + identityResource.DisplayName = input.DisplayName; + } + identityResource.Emphasize = input.Emphasize; + identityResource.Enabled = input.Enabled; + identityResource.Required = input.Required; + identityResource.ShowInDiscoveryDocument = input.ShowInDiscoveryDocument; - [Authorize(AbpIdentityServerPermissions.IdentityResources.Properties.Delete)] - public virtual async Task DeletePropertyAsync(IdentityResourcePropertyGetByKeyDto identityResourcePropertyGetByKey) - { - var identityResource = await IdentityResourceRepository.GetAsync(identityResourcePropertyGetByKey.IdentityResourceId); + if (await IsGrantAsync(AbpIdentityServerPermissions.IdentityResources.ManageClaims)) + { + // 删除不存在的UserClaim + identityResource.UserClaims.RemoveAll(claim => input.UserClaims.Contains(claim.Type)); + foreach (var inputClaim in input.UserClaims) + { + var userClaim = identityResource.FindUserClaim(inputClaim); + if (userClaim == null) + { + identityResource.AddUserClaim(inputClaim); + } + } + } - if (!identityResource.Properties.ContainsKey(identityResourcePropertyGetByKey.Key)) + if (await IsGrantAsync(AbpIdentityServerPermissions.IdentityResources.ManageProperties)) { - throw new UserFriendlyException(L[AbpIdentityServerErrorConsts.IdentityResourcePropertyNotFound, identityResourcePropertyGetByKey.Key]); + // 删除不存在的Property + identityResource.Properties.RemoveAll(scope => !input.Properties.ContainsKey(scope.Key)); + foreach (var inputProp in input.Properties) + { + identityResource.Properties[inputProp.Key] = inputProp.Value; + } } - identityResource.Properties.Remove(identityResourcePropertyGetByKey.Key); - await IdentityResourceRepository.UpdateAsync(identityResource); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs new file mode 100644 index 000000000..e35232afd --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.IdentityServer.ApiResources +{ + public interface IApiResourceRepository : Volo.Abp.IdentityServer.ApiResources.IApiResourceRepository + { + Task> GetNamesAsync(CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/Grants/IPersistentGrantRepository.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/Grants/IPersistentGrantRepository.cs index 8bd221627..b027523c5 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/Grants/IPersistentGrantRepository.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/Grants/IPersistentGrantRepository.cs @@ -1,5 +1,4 @@ -using JetBrains.Annotations; -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Volo.Abp.IdentityServer.Grants; diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceRepository.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceRepository.cs new file mode 100644 index 000000000..2b7626469 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN/Abp/IdentityServer/IdentityResources/IIdentityResourceRepository.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.IdentityServer.IdentityResources +{ + public interface IIdentityResourceRepository : Volo.Abp.IdentityServer.IdentityResources.IIdentityResourceRepository + { + Task> GetNamesAsync(CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/ApiResources/EfCoreApiResourceRepository.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/ApiResources/EfCoreApiResourceRepository.cs new file mode 100644 index 000000000..97f964b96 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/ApiResources/EfCoreApiResourceRepository.cs @@ -0,0 +1,35 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.IdentityServer.ApiResources; +using Volo.Abp.IdentityServer.EntityFrameworkCore; + +namespace LINGYUN.Abp.IdentityServer.ApiResources +{ + [Dependency(ServiceLifetime.Transient)] + [ExposeServices( + typeof(IApiResourceRepository), + typeof(ApiResourceRepository), + typeof(Volo.Abp.IdentityServer.ApiResources.IApiResourceRepository))] + public class EfCoreApiResourceRepository : ApiResourceRepository, IApiResourceRepository + { + public EfCoreApiResourceRepository( + IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } + + public virtual async Task> GetNamesAsync(CancellationToken cancellationToken = default) + { + return await DbSet + .Select(x => x.Name) + .Distinct() + .ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/IdentityResources/EfCoreIdentityResourceRepository.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/IdentityResources/EfCoreIdentityResourceRepository.cs new file mode 100644 index 000000000..ea7b5c9a7 --- /dev/null +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN/Abp/IdentityServer/IdentityResources/EfCoreIdentityResourceRepository.cs @@ -0,0 +1,35 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.IdentityServer.EntityFrameworkCore; +using Volo.Abp.IdentityServer.IdentityResources; + +namespace LINGYUN.Abp.IdentityServer.IdentityResources +{ + [Dependency(ServiceLifetime.Transient)] + [ExposeServices( + typeof(IIdentityResourceRepository), + typeof(IdentityResourceRepository), + typeof(Volo.Abp.IdentityServer.IdentityResources.IIdentityResourceRepository))] + public class EfCoreIdentityResourceRepository : IdentityResourceRepository, IIdentityResourceRepository + { + public EfCoreIdentityResourceRepository( + IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + } + + public virtual async Task> GetNamesAsync(CancellationToken cancellationToken = default) + { + return await DbSet + .Select(x => x.Name) + .Distinct() + .ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/AbpIdentityServerHttpApiModule.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/AbpIdentityServerHttpApiModule.cs index 2fbb3a683..377557992 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/AbpIdentityServerHttpApiModule.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/AbpIdentityServerHttpApiModule.cs @@ -1,5 +1,8 @@ -using Microsoft.Extensions.DependencyInjection; +using Localization.Resources.AbpUi; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.IdentityServer.Localization; +using Volo.Abp.Localization; using Volo.Abp.Modularity; namespace LINGYUN.Abp.IdentityServer @@ -17,5 +20,15 @@ namespace LINGYUN.Abp.IdentityServer mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpIdentityServerHttpApiModule).Assembly); }); } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceController.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceController.cs index 791d183f7..ef493df32 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceController.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/ApiResources/ApiResourceController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using System; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -7,8 +8,8 @@ using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.IdentityServer.ApiResources { [RemoteService(Name = AbpIdentityServerConsts.RemoteServiceName)] - [Area("IdentityServer")] - [Route("api/IdentityServer/ApiResources")] + [Area("identity-server")] + [Route("api/identity-server/api-resources")] public class ApiResourceController : AbpController, IApiResourceAppService { protected IApiResourceAppService ApiResourceAppService { get; } @@ -19,63 +20,36 @@ namespace LINGYUN.Abp.IdentityServer.ApiResources } [HttpGet] - [Route("{Id}")] - public virtual async Task GetAsync(ApiResourceGetByIdInputDto apiResourceGetById) + [Route("{id}")] + public virtual async Task GetAsync(Guid id) { - return await ApiResourceAppService.GetAsync(apiResourceGetById); + return await ApiResourceAppService.GetAsync(id); } [HttpGet] - public virtual async Task> GetAsync(ApiResourceGetByPagedInputDto apiResourceGetByPaged) + public virtual async Task> GetListAsync(ApiResourceGetByPagedInputDto input) { - return await ApiResourceAppService.GetAsync(apiResourceGetByPaged); + return await ApiResourceAppService.GetListAsync(input); } [HttpPost] - public virtual async Task CreateAsync(ApiResourceCreateDto apiResourceCreate) + public virtual async Task CreateAsync(ApiResourceCreateDto input) { - return await ApiResourceAppService.CreateAsync(apiResourceCreate); + return await ApiResourceAppService.CreateAsync(input); } [HttpPut] - public virtual async Task UpdateAsync(ApiResourceUpdateDto apiResourceUpdate) + [Route("{id}")] + public virtual async Task UpdateAsync(Guid id, ApiResourceUpdateDto input) { - return await ApiResourceAppService.UpdateAsync(apiResourceUpdate); + return await ApiResourceAppService.UpdateAsync(id, input); } [HttpDelete] - [Route("{Id}")] - public virtual async Task DeleteAsync(ApiResourceGetByIdInputDto apiResourceGetById) + [Route("{id}")] + public virtual async Task DeleteAsync(Guid id) { - await ApiResourceAppService.DeleteAsync(apiResourceGetById); - } - - [HttpPost] - [Route("Secrets")] - public virtual async Task AddSecretAsync(ApiSecretCreateDto apiSecretCreate) - { - return await ApiResourceAppService.AddSecretAsync(apiSecretCreate); - } - - [HttpDelete] - [Route("Secrets")] - public virtual async Task DeleteSecretAsync(ApiSecretGetByTypeInputDto apiSecretGetByType) - { - await ApiResourceAppService.DeleteSecretAsync(apiSecretGetByType); - } - - [HttpPost] - [Route("Scopes")] - public virtual async Task AddScopeAsync(ApiScopeCreateDto apiScopeCreate) - { - return await ApiResourceAppService.AddScopeAsync(apiScopeCreate); - } - - [HttpDelete] - [Route("Scopes")] - public virtual async Task DeleteScopeAsync(ApiScopeGetByNameInputDto apiScopeGetByName) - { - await ApiResourceAppService.DeleteScopeAsync(apiScopeGetByName); + await ApiResourceAppService.DeleteAsync(id); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/Clients/ClientController.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/Clients/ClientController.cs index 75d2071a6..9fd243372 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/Clients/ClientController.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/Clients/ClientController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using System; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -7,8 +8,8 @@ using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.IdentityServer.Clients { [RemoteService(Name = AbpIdentityServerConsts.RemoteServiceName)] - [Area("IdentityServer")] - [Route("api/IdentityServer/Clients")] + [Area("identity-server")] + [Route("api/identity-server/clients")] public class ClientController : AbpController, IClientAppService { protected IClientAppService ClientAppService { get; } @@ -18,105 +19,64 @@ namespace LINGYUN.Abp.IdentityServer.Clients } [HttpPost] - public virtual async Task CreateAsync(ClientCreateDto clientCreate) + public virtual async Task CreateAsync(ClientCreateDto input) { - return await ClientAppService.CreateAsync(clientCreate); + return await ClientAppService.CreateAsync(input); } [HttpDelete] - [Route("{Id}")] - public virtual async Task DeleteAsync(ClientGetByIdInputDto clientGetByIdInput) + [Route("{id}")] + public virtual async Task DeleteAsync(Guid id) { - await ClientAppService.DeleteAsync(clientGetByIdInput); + await ClientAppService.DeleteAsync(id); } [HttpGet] - [Route("{Id}")] - public virtual async Task GetAsync(ClientGetByIdInputDto clientGetById) + [Route("{id}")] + public virtual async Task GetAsync(Guid id) { - return await ClientAppService.GetAsync(clientGetById); + return await ClientAppService.GetAsync(id); } [HttpGet] - public virtual async Task> GetAsync(ClientGetByPagedInputDto clientGetByPaged) + public virtual async Task> GetListAsync(ClientGetByPagedDto input) { - return await ClientAppService.GetAsync(clientGetByPaged); + return await ClientAppService.GetListAsync(input); } [HttpPut] - public virtual async Task UpdateAsync(ClientUpdateInputDto clientUpdateInput) + [Route("{id}")] + public virtual async Task UpdateAsync(Guid id, ClientUpdateDto input) { - return await ClientAppService.UpdateAsync(clientUpdateInput); + return await ClientAppService.UpdateAsync(id, input); } [HttpPost] - [Route("Clone")] - public virtual async Task CloneAsync(ClientCloneInputDto clientCloneInput) + [Route("{id}/clone")] + public virtual async Task CloneAsync(Guid id, ClientCloneDto input) { - return await ClientAppService.CloneAsync(clientCloneInput); + return await ClientAppService.CloneAsync(id, input); } - [HttpPost] - [Route("Claims")] - public virtual async Task AddClaimAsync(ClientClaimCreateDto clientClaimCreate) - { - return await ClientAppService.AddClaimAsync(clientClaimCreate); - } - - [HttpPut] - [Route("Claims")] - public virtual async Task UpdateClaimAsync(ClientClaimUpdateDto clientClaimUpdate) - { - return await ClientAppService.UpdateClaimAsync(clientClaimUpdate); - } - - [HttpDelete] - [Route("Claims")] - public virtual async Task DeleteClaimAsync(ClientClaimGetByKeyInputDto clientClaimGetByKey) - { - await ClientAppService.DeleteClaimAsync(clientClaimGetByKey); - } - - [HttpPost] - [Route("Properties")] - public virtual async Task AddPropertyAsync(ClientPropertyCreateDto clientPropertyCreate) - { - return await ClientAppService.AddPropertyAsync(clientPropertyCreate); - } - - [HttpPut] - [Route("Properties")] - public virtual async Task UpdatePropertyAsync(ClientPropertyUpdateDto clientPropertyUpdate) - { - return await ClientAppService.UpdatePropertyAsync(clientPropertyUpdate); - } - - [HttpDelete] - [Route("Properties")] - public virtual async Task DeletePropertyAsync(ClientPropertyGetByKeyDto clientPropertyGetByKey) - { - await ClientAppService.DeletePropertyAsync(clientPropertyGetByKey); - } - - [HttpPost] - [Route("Secrets")] - public virtual async Task AddSecretAsync(ClientSecretCreateDto clientSecretCreate) + [HttpGet] + [Route("assignable-api-resources")] + public virtual async Task> GetAssignableApiResourcesAsync() { - return await ClientAppService.AddSecretAsync(clientSecretCreate); + return await ClientAppService.GetAssignableApiResourcesAsync(); } - [HttpDelete] - [Route("Secrets")] - public virtual async Task DeleteSecretAsync(ClientSecretGetByTypeDto clientSecretGetByType) + [HttpGet] + [Route("assignable-identity-resources")] + public virtual async Task> GetAssignableIdentityResourcesAsync() { - await ClientAppService.DeleteSecretAsync(clientSecretGetByType); + return await ClientAppService.GetAssignableIdentityResourcesAsync(); } - [HttpPut] - [Route("Secrets")] - public virtual async Task UpdateSecretAsync(ClientSecretUpdateDto clientSecretUpdate) + [HttpGet] + [Route("distinct-cors-origins")] + public virtual async Task> GetAllDistinctAllowedCorsOriginsAsync() { - return await ClientAppService.UpdateSecretAsync(clientSecretUpdate); + return await ClientAppService.GetAllDistinctAllowedCorsOriginsAsync(); } } } diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceController.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceController.cs index 8e1e84c05..71837568d 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceController.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN/Abp/IdentityServer/IdentityResources/IdentityResourceController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using System; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -7,8 +8,8 @@ using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.IdentityServer.IdentityResources { [RemoteService(Name = AbpIdentityServerConsts.RemoteServiceName)] - [Area("IdentityServer")] - [Route("api/IdentityServer/IdentityResources")] + [Area("identity-server")] + [Route("api/identity-server/identity-resources")] public class IdentityResourceController : AbpController, IIdentityResourceAppService { protected IIdentityResourceAppService IdentityResourceAppService { get; } @@ -19,48 +20,36 @@ namespace LINGYUN.Abp.IdentityServer.IdentityResources } [HttpGet] - [Route("{Id}")] - public virtual async Task GetAsync(IdentityResourceGetByIdInputDto identityResourceGetById) + [Route("{id}")] + public virtual async Task GetAsync(Guid id) { - return await IdentityResourceAppService.GetAsync(identityResourceGetById); + return await IdentityResourceAppService.GetAsync(id); } [HttpGet] - public virtual async Task> GetAsync(IdentityResourceGetByPagedInputDto identityResourceGetByPaged) + public virtual async Task> GetListAsync(IdentityResourceGetByPagedDto input) { - return await IdentityResourceAppService.GetAsync(identityResourceGetByPaged); + return await IdentityResourceAppService.GetListAsync(input); } [HttpPost] - public virtual async Task CreateAsync(IdentityResourceCreateDto identityResourceCreate) + public virtual async Task CreateAsync(IdentityResourceCreateOrUpdateDto input) { - return await IdentityResourceAppService.CreateAsync(identityResourceCreate); + return await IdentityResourceAppService.CreateAsync(input); } [HttpPut] - public virtual async Task UpdateAsync(IdentityResourceUpdateDto identityResourceUpdate) + [Route("{id}")] + public virtual async Task UpdateAsync(Guid id, IdentityResourceCreateOrUpdateDto input) { - return await IdentityResourceAppService.UpdateAsync(identityResourceUpdate); + return await IdentityResourceAppService.UpdateAsync(id, input); } [HttpDelete] - public virtual async Task DeleteAsync(IdentityResourceGetByIdInputDto identityResourceGetById) + [Route("{id}")] + public virtual async Task DeleteAsync(Guid id) { - await IdentityResourceAppService.DeleteAsync(identityResourceGetById); - } - - [HttpPost] - [Route("Properties")] - public virtual async Task AddPropertyAsync(IdentityResourcePropertyCreateDto identityResourcePropertyCreate) - { - return await IdentityResourceAppService.AddPropertyAsync(identityResourcePropertyCreate); - } - - [HttpDelete] - [Route("Properties")] - public virtual async Task DeletePropertyAsync(IdentityResourcePropertyGetByKeyDto identityResourcePropertyGetByKey) - { - await IdentityResourceAppService.DeletePropertyAsync(identityResourcePropertyGetByKey); + await IdentityResourceAppService.DeleteAsync(id); } } } diff --git a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db index 2d77eb643..9b1e5086f 100644 Binary files a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db and b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db differ diff --git a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs index 61ae931f1..eceaa69b1 100644 --- a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs +++ b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs @@ -55,11 +55,11 @@ namespace LINGYUN.Abp.IdentityServer4 typeof(LINGYUN.Abp.Account.AbpAccountHttpApiModule), typeof(LINGYUN.Abp.IdentityServer.AbpIdentityServerApplicationModule), typeof(LINGYUN.Abp.IdentityServer.AbpIdentityServerHttpApiModule), + typeof(LINGYUN.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule), + typeof(LINGYUN.Abp.IdentityServer.EntityFrameworkCore.AbpIdentityServerEntityFrameworkCoreModule), typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), typeof(AbpEntityFrameworkCoreMySQLModule), - typeof(LINGYUN.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), typeof(AbpAuditLoggingEntityFrameworkCoreModule), typeof(AbpTenantManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), @@ -177,12 +177,6 @@ namespace LINGYUN.Abp.IdentityServer4 Configure(options => { var redisConfig = ConfigurationOptions.Parse(options.Configuration); - // 单独一个缓存数据库 - var databaseConfig = configuration.GetSection("Redis:DefaultDatabase"); - if (databaseConfig.Exists()) - { - redisConfig.DefaultDatabase = databaseConfig.Get(); - } options.ConfigurationOptions = redisConfig; options.InstanceName = configuration["Redis:InstanceName"]; }); diff --git a/vueJs/src/api/abpconfiguration.ts b/vueJs/src/api/abpconfiguration.ts index 5d3921e8c..a8117b077 100644 --- a/vueJs/src/api/abpconfiguration.ts +++ b/vueJs/src/api/abpconfiguration.ts @@ -18,19 +18,19 @@ export default class AbpConfigurationService { /** 授权 */ export class Auth { /** 权限集合 */ - policies?: { [key: string]: boolean} + policies?: { [key: string]: boolean} = {} /** 已授权集合 */ - grantedPolicies?: { [key: string]: boolean} + grantedPolicies?: { [key: string]: boolean} = {} } /** 当前租户 */ export class CurrentTenant { /** 标识 */ - id?: string + id? = '' /** 名称 */ - name?: string + name? = '' /** 是否可用 */ - isAvailable!: boolean + isAvailable = false public clear() { this.id = '' @@ -42,101 +42,101 @@ export class CurrentTenant { /** 当前用户 */ export class CurrentUser { /** 标识 */ - id?: string + id? = '' /** 邮件地址 */ - email?: string + email? = '' /** 邮件已验证 */ - emailVerified!: boolean + emailVerified = false /** 手机号 */ - phoneNumber?: string + phoneNumber? = '' /** 手机号已验证 */ - phoneNumberVerified!: boolean + phoneNumberVerified = false /** 名称 */ - name?: string + name? = '' /** 简称 */ - surName?: string + surName? = '' /** 用户名 */ - userName?: string + userName? = '' /** 所属租户 */ - tenantId?: string + tenantId? = '' /** 是否已认证 */ - isAuthenticated!: boolean + isAuthenticated = false /** 所属角色列表 */ - roles!: string[] + roles = new Array() } /** 功能 */ export class Feature { /** 功能集合 */ - values?: { [key: string]: string} + values?: { [key: string]: string} = {} } /** 时区转换 */ export class DateTimeFormat { /** 日历算法 */ - calendarAlgorithmType!: string + calendarAlgorithmType = '' /** 日期分隔符 */ - dateSeparator!: string + dateSeparator = '' /** 日期时间格式 */ - dateTimeFormatLong!: string + dateTimeFormatLong = '' /** 完整日期时间格式 */ - fullDateTimePattern!: string + fullDateTimePattern = '' /** 长时间格式 */ - longTimePattern!: string + longTimePattern = '' /** 短日期格式 */ - shortDatePattern!: string + shortDatePattern = '' /** 短时间格式 */ - shortTimePattern!: string + shortTimePattern = '' } /** 当前区域信息 */ export class CurrentCulture { /** 本地化名称 */ - cultureName!: string + cultureName = '' /** 显示名称 */ - displayName!: string + displayName = '' /** 英文名称 */ - englishName!: string + englishName = '' /** 是否从右到左 */ - isRightToLeft!: boolean + isRightToLeft = false /** 名称 */ - name!: string + name = '' /** 本地名称 */ - nativeName!: string + nativeName = '' /** 三个字母的ISO名称 */ - threeLetterIsoLanguageName!: string + threeLetterIsoLanguageName = '' /** 两个字母的ISO名称 */ - twoLetterIsoLanguageName!: string + twoLetterIsoLanguageName = '' /** 日期时间格式 */ - dateTimeFormat!: DateTimeFormat + dateTimeFormat = new DateTimeFormat() } /** 语言 */ export class Language { /** 本地化名称 */ - cultureName!: string + cultureName = '' /** 显示名称 */ - displayName!: string + displayName = '' /** 图标 */ - flagIcon?: string + flagIcon = '' /** 用户界面本地化名称 */ - uiCultureName!: string + uiCultureName = '' } /** 本地化 */ export class Localization { /** 当前区域 */ - currentCulture!: CurrentCulture + currentCulture = new CurrentCulture() /** 默认本地化资源名称 */ - defaultResourceName?: string + defaultResourceName = '' /** 支持的语言列表 */ - languages!: Language[] + languages = new Array() /** 本地化资源集合 */ - values!: {[key: string]: {[key: string]: string}} + values: {[key: string]: {[key: string]: string}} = {} /** 语言映射集合 */ - languagesMap?: {[key: string]: INameValue[]} + languagesMap: {[key: string]: INameValue[]} = {} /** 语言文档映射集合 */ - languageFilesMap?: {[key: string]: INameValue[]} + languageFilesMap: {[key: string]: INameValue[]} = {} } /** 多租户配置 */ @@ -148,7 +148,7 @@ export class MultiTenancy { /** 全局设置 */ export class Setting { /** 设置集合 */ - values?: {[key: string]: any} + values: {[key: string]: any} = {} } /** 实体查询属性扩展 */ @@ -166,11 +166,11 @@ export class ExtensionPropertyApiUpdate extends Available { /** 实体属性api定义 */ export class ExtensionPropertyApi { /** 查询时 */ - onGet!: ExtensionPropertyApiGet + onGet = new ExtensionPropertyApiGet() /** 创建时 */ - onCreate!: ExtensionPropertyApiCreate + onCreate = new ExtensionPropertyApiCreate() /** 更新时 */ - onUpdate!: ExtensionPropertyApiUpdate + onUpdate = new ExtensionPropertyApiUpdate() } export class ExtensionPropertyUiTable extends Available { @@ -180,55 +180,55 @@ export class ExtensionPropertyUiForm extends Available { } export class ExtensionPropertyUi { - onTable!: ExtensionPropertyUiTable - onCreateForm!: ExtensionPropertyUiForm - onEditForm!: ExtensionPropertyUiForm + onTable = new ExtensionPropertyUiTable() + onCreateForm = new ExtensionPropertyUiForm() + onEditForm = new ExtensionPropertyUiForm() } export class LocalizableString { - name!: string - resource?: string + name = '' + resource = '' } export class ExtensionPropertyAttribute { - typeSimple?: string - config?: {[key: string]: any} + typeSimple = '' + config: {[key: string]: any} = {} } export class ExtensionProperty { - type!: string - typeSimple!: string - displayName?: LocalizableString - api!: ExtensionPropertyApi - ui!: ExtensionPropertyUi - attributes!: ExtensionPropertyAttribute[] - configuration!: {[key: string]: any} - defaultValue!: any + type = '' + typeSimple = '' + displayName = new LocalizableString() + api = new ExtensionPropertyApi() + ui = new ExtensionPropertyUi() + attributes = new Array() + configuration: {[key: string]: any} = {} + defaultValue: any = '' } export class EntityExtension { - properties!: {[key: string]: ExtensionProperty} - configuration!: {[key: string]: any} + properties: {[key: string]: ExtensionProperty} = {} + configuration: {[key: string]: any} = {} } export class ModuleExtension { - entities!: {[key: string]: EntityExtension} - configuration!: {[key: string]: any} + entities: {[key: string]: EntityExtension} = {} + configuration: {[key: string]: any} = {} } export class ExtensionEnumField { - name!: string - value!: any + name = '' + value: any = '' } export class ExtensionEnum { - fields!: ExtensionEnumField[] - localizationResource!: string + fields = new Array() + localizationResource = '' } export class ObjectExtension { - modules!: {[key: string]: ModuleExtension} - enums!: {[key: string]: ExtensionEnum} + modules: {[key: string]: ModuleExtension} = {} + enums: {[key: string]: ExtensionEnum} = {} } /** abp框架信息 */ @@ -254,25 +254,14 @@ export interface IAbpConfiguration { } export class AbpConfiguration implements IAbpConfiguration { - auth!: Auth - currentTenant!: CurrentTenant - currentUser!: CurrentUser - features!: Feature - localization!: Localization - multiTenancy!: MultiTenancy - objectExtensions!: ObjectExtension - setting!: Setting - - constructor() { - this.auth = new Auth() - this.setting = new Setting() - this.features = new Feature() - this.currentUser = new CurrentUser() - this.localization = new Localization() - this.multiTenancy = new MultiTenancy() - this.currentTenant = new CurrentTenant() - this.objectExtensions = new ObjectExtension() - } + auth = new Auth() + currentTenant = new CurrentTenant() + currentUser = new CurrentUser() + features = new Feature() + localization = new Localization() + multiTenancy = new MultiTenancy() + objectExtensions = new ObjectExtension() + setting = new Setting() public getSetting(key: string) { if (this.setting.values && this.setting.values[key]) { diff --git a/vueJs/src/api/api-resources.ts b/vueJs/src/api/api-resources.ts new file mode 100644 index 000000000..4a5e3966f --- /dev/null +++ b/vueJs/src/api/api-resources.ts @@ -0,0 +1,107 @@ +import ApiService from './serviceBase' +import { FullAuditedEntityDto, PagedAndSortedResultRequestDto, PagedResultDto, SecretBase } from './types' + +const sourceUrl = '/api/identity-server/api-resources' +const serviceUrl = process.env.VUE_APP_BASE_API + +export default class ApiResourceService { + /** + * 获取Api资源 + * @param id Api资源标识 + */ + public static getApiResourceById(id: string) { + const _url = sourceUrl + '/' + id + return ApiService.Get(_url, serviceUrl) + } + + /** + * 获取Api资源列表 + * @param payload 查询参数 + */ + public static getApiResources(payload: ApiResourceGetByPaged) { + let _url = sourceUrl + '?filter=' + payload.filter + _url += '&sorting=' + payload.sorting + _url += '&skipCount=' + payload.skipCount + _url += '&maxResultCount=' + payload.maxResultCount + return ApiService.Get>(_url, serviceUrl) + } + + /** + * 创建Api资源 + * @param payload api资源参数 + */ + public static createApiResource(payload: ApiResourceCreate) { + return ApiService.Post(sourceUrl, payload, serviceUrl) + } + + /** + * 变更Api资源 + * @param payload api资源参数 + */ + public static updateApiResource(id: string, payload: ApiResourceUpdate) { + const _url = sourceUrl + '/' + id + return ApiService.Put(_url, payload, serviceUrl) + } + + /** + * 删除Api资源 + * @param id Api资源标识 + */ + public static deleteApiResource(id: string) { + const _url = sourceUrl + '/' + id + return ApiService.Delete(_url, serviceUrl) + } +} + +export enum HashType { + Sha256, + Sha512 +} + +export class ApiScope { + name = '' + displayName?: string = '' + description?: string = '' + required = false + emphasize = false + showInDiscoveryDocument = true + userClaims = new Array() +} + +export class ApiSecret extends SecretBase {} + +export class ApiSecretCreateOrUpdate extends SecretBase { + hashType = HashType.Sha256 +} + +export class ApiResourceCreateOrUpdate { + displayName?: string = '' + description?: string = '' + enabled = true + userClaims = new Array() + scopes = new Array() + secrets = new Array() + properties: {[key: string]: string} = {} +} + +export class ApiResourceCreate extends ApiResourceCreateOrUpdate { + name = '' +} + +export class ApiResourceUpdate extends ApiResourceCreateOrUpdate {} + +export class ApiResource extends FullAuditedEntityDto { + id!: string + name!: string + displayName?: string + description?: string + enabled!: boolean + userClaims = new Array() + scopes = new Array() + secrets = new Array() + properties: {[key: string]: string} = {} +} + +export class ApiResourceGetByPaged extends PagedAndSortedResultRequestDto { + filter = '' +} diff --git a/vueJs/src/api/apiresources.ts b/vueJs/src/api/apiresources.ts deleted file mode 100644 index f299a4765..000000000 --- a/vueJs/src/api/apiresources.ts +++ /dev/null @@ -1,279 +0,0 @@ -import ApiService from './serviceBase' -import { FullAuditedEntityDto, PagedAndSortedResultRequestDto, PagedResultDto } from './types' - -const serviceUrl = process.env.VUE_APP_BASE_API - -export default class ApiResourceService { - /** - * 获取Api资源 - * @param id Api资源标识 - */ - public static getApiResourceById(id: string) { - let _url = '/api/IdentityServer/ApiResources/' - _url += id - return ApiService.Get(_url, serviceUrl) - } - - /** - * 获取Api资源列表 - * @param payload 查询参数 - */ - public static getApiResources(payload: ApiResourceGetByPaged) { - let _url = '/api/IdentityServer/ApiResources' - _url += '?filter=' + payload.filter - _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + payload.skipCount - _url += '&maxResultCount=' + payload.maxResultCount - return ApiService.Get>(_url, serviceUrl) - } - - /** - * 创建Api资源 - * @param payload api资源参数 - */ - public static createApiResource(payload: ApiResourceCreate) { - const _url = '/api/IdentityServer/ApiResources' - return ApiService.Post(_url, payload, serviceUrl) - } - - /** - * 变更Api资源 - * @param payload api资源参数 - */ - public static updateApiResource(payload: ApiResourceUpdate) { - const _url = '/api/IdentityServer/ApiResources' - return ApiService.Put(_url, payload, serviceUrl) - } - - /** - * 删除Api资源 - * @param id Api资源标识 - */ - public static deleteApiResource(id: string) { - let _url = '/api/IdentityServer/ApiResources/' - _url += id - return ApiService.Delete(_url, serviceUrl) - } - - /** - * 增加Api密钥 - * @param payload Api密钥参数 - */ - public static addApiSecret(payload: ApiSecretCreate) { - const _url = '/api/IdentityServer/ApiResources/Secrets' - return ApiService.Post(_url, payload, serviceUrl) - } - - /** - * 删除Api密钥 - * @param apiResourceId 资源标识 - * @param type 密钥类型 - * @param value 密钥值 - */ - public static deleteApiSecret(apiResourceId: string, type: string, value: string) { - let _url = '/api/IdentityServer/ApiResources/Secrets/' - _url += '?apiResourceId=' + apiResourceId - _url += '&type=' + type - _url += '&value=' + value - return ApiService.Delete(_url, serviceUrl) - } - - /** - * 增加Api授权范围 - * @param payload api授权范围参数 - */ - public static addApiScope(payload: ApiScopeCreate) { - const _url = '/api/IdentityServer/ApiResources/Scopes' - return ApiService.Post(_url, payload, serviceUrl) - } - - /** - * 删除Api授权范围 - * @param apiResourceId api资源标识 - * @param name 授权范围名称 - */ - public static deleteApiScope(apiResourceId: string, name: string) { - let _url = '/api/IdentityServer/ApiResources/Scopes' - _url += '?apiResourceId=' + apiResourceId - _url += '&name=' + name - return ApiService.Delete(_url, serviceUrl) - } -} - -export enum HashType { - Sha256, - Sha512 -} - -export class ApiSecret { - type!: string - value!: string - hashType?: HashType - description?: string - expiration?: Date -} - -export class ApiScopeClaim { - type!: string -} - -export class ApiResourceClaim { - type!: string -} - -export class ApiScope { - name!: string - displayName?: string - description?: string - required!: boolean - emphasize!: boolean - showInDiscoveryDocument!: boolean - userClaims: ApiScopeClaim[] - - constructor() { - this.userClaims = new Array() - } -} - -export class ApiScopeCreate { - apiResourceId!: string - name!: string - displayName?: string - description?: string - required!: boolean - emphasize!: boolean - showInDiscoveryDocument!: boolean - userClaims: ApiScopeClaim[] - - constructor() { - this.apiResourceId = '' - this.name = '' - this.displayName = '' - this.description = '' - this.required = false - this.emphasize = false - this.showInDiscoveryDocument = false - this.userClaims = new Array() - } - - public static empty() { - return new ApiScopeCreate() - } -} - -export class ApiSecretCreate { - apiResourceId!: string - type!: string - value!: string - hashType?: HashType - description?: string - expiration?: Date - - constructor() { - this.type = 'SharedSecret' - this.value = '' - this.hashType = HashType.Sha256 - this.description = '' - this.expiration = undefined - } - - public static empty() { - return new ApiSecretCreate() - } -} - -export class ApiResourceCreate { - name!: string - displayName?: string - description?: string - enabled!: boolean - userClaims!: ApiResourceClaim[] - - constructor() { - this.name = '' - this.displayName = '' - this.description = '' - this.enabled = true - this.userClaims = new Array() - } - - public static empty() { - return new ApiResourceCreate() - } - - public static create(apiResource: ApiResource) { - const resource = ApiResourceCreate.empty() - resource.name = apiResource.name - resource.displayName = apiResource.displayName - resource.description = apiResource.description - resource.enabled = apiResource.enabled - resource.userClaims = apiResource.userClaims - return resource - } -} - -export class ApiResourceUpdate { - id!: string - displayName?: string - description?: string - enabled!: boolean - userClaims!: ApiResourceClaim[] - - constructor() { - this.id = '' - this.displayName = '' - this.description = '' - this.enabled = true - this.userClaims = new Array() - } - - public static empty() { - return new ApiResourceUpdate() - } - - public static create(apiResource: ApiResource) { - const resource = ApiResourceUpdate.empty() - resource.id = apiResource.id - resource.displayName = apiResource.displayName - resource.description = apiResource.description - resource.enabled = apiResource.enabled - resource.userClaims = apiResource.userClaims - return resource - } -} - -export class ApiResource extends FullAuditedEntityDto { - id!: string - name!: string - displayName?: string - description?: string - enabled!: boolean - secrets!: ApiSecret[] - scopes!: ApiScope[] - userClaims!: ApiResourceClaim[] - - constructor() { - super() - this.id = '' - this.name = '' - this.displayName = '' - this.description = '' - this.enabled = true - this.scopes = new Array() - this.secrets = new Array() - this.userClaims = new Array() - } - - public static empty() { - return new ApiResource() - } -} - -export class ApiResourceGetByPaged extends PagedAndSortedResultRequestDto { - filter!: string - - constructor() { - super() - this.filter = '' - } -} diff --git a/vueJs/src/api/clients.ts b/vueJs/src/api/clients.ts index ec06284f6..eb901b4d7 100644 --- a/vueJs/src/api/clients.ts +++ b/vueJs/src/api/clients.ts @@ -1,18 +1,17 @@ import ApiService from './serviceBase' -import { FullAuditedEntityDto, PagedAndSortedResultRequestDto, PagedResultDto } from './types' +import { FullAuditedEntityDto, PagedAndSortedResultRequestDto, ListResultDto, PagedResultDto, SecretBase, Claim } from './types' +const sourceUrl = '/api/identity-server/clients' const serviceUrl = process.env.VUE_APP_BASE_API export default class ClientService { public static getClientById(id: string) { - let _url = '/api/IdentityServer/Clients/' - _url += id + const _url = sourceUrl + '/' + id return ApiService.Get(_url, serviceUrl) } public static getClients(payload: ClientGetByPaged) { - let _url = '/api/IdentityServer/Clients' - _url += '?filter=' + payload.filter + let _url = sourceUrl + '?filter=' + payload.filter _url += '&sorting=' + payload.sorting _url += '&skipCount=' + payload.skipCount _url += '&maxResultCount=' + payload.maxResultCount @@ -20,144 +19,56 @@ export default class ClientService { } public static createClient(payload: ClientCreate) { - const _url = '/api/IdentityServer/Clients' - return ApiService.Post(_url, payload, serviceUrl) + return ApiService.Post(sourceUrl, payload, serviceUrl) } - public static cloneClient(payload: ClientClone) { - const _url = '/api/IdentityServer/Clients/Clone' + public static cloneClient(id: string, payload: ClientClone) { + const _url = sourceUrl + '/' + id + '/clone' return ApiService.Post(_url, payload, serviceUrl) } - public static updateClient(payload: ClientUpdate) { - const _url = '/api/IdentityServer/Clients' + public static updateClient(id: string, payload: ClientUpdate) { + const _url = sourceUrl + '/' + id return ApiService.Put(_url, payload, serviceUrl) } public static deleteClient(id: string) { - const _url = '/api/IdentityServer/Clients/' + id - return ApiService.Delete(_url, serviceUrl) - } - - public static addClientSecret(payload: ClientSecretCreate) { - const _url = '/api/IdentityServer/Clients/Secrets' - return ApiService.Post(_url, payload, serviceUrl) - } - - public static deleteClientSecret(clientId: string, type: string, value: string) { - let _url = '/api/IdentityServer/Clients/Secrets' - _url += '?clientId=' + clientId - _url += '&type=' + type - _url += '&value=' + value + const _url = sourceUrl + '/' + id return ApiService.Delete(_url, serviceUrl) } - public static addClientProperty(payload: ClientPropertyCreate) { - const _url = '/api/IdentityServer/Clients/Properties' - return ApiService.Post(_url, payload, serviceUrl) - } - - public static deleteClientProperty(clientId: string, key: string, value: string) { - let _url = '/api/IdentityServer/Clients/Properties' - _url += '?clientId=' + clientId - _url += '&key=' + key - _url += '&value=' + value - return ApiService.Delete(_url, serviceUrl) + public static getAssignableApiResources() { + const _url = sourceUrl + '/assignable-api-resources' + return ApiService.Get>(_url, serviceUrl) } - public static addClientClaim(payload: ClientClaimCreate) { - const _url = '/api/IdentityServer/Clients/Claims' - return ApiService.Post(_url, payload, serviceUrl) + public static getAssignableIdentityResources() { + const _url = sourceUrl + '/assignable-identity-resources' + return ApiService.Get>(_url, serviceUrl) } - public static deleteClientClaim(clientId: string, type: string, value: string) { - let _url = '/api/IdentityServer/Clients/Claims' - _url += '?clientId=' + clientId - _url += '&type=' + type - _url += '&value=' + value - return ApiService.Delete(_url, serviceUrl) + public static getAllDistinctAllowedCorsOrigins() { + const _url = sourceUrl + '/distinct-cors-origins' + return ApiService.Get>(_url, serviceUrl) } } -export class ClientGetByPaged extends PagedAndSortedResultRequestDto { - filter = '' -} - export enum HashType { - Sha256, - Sha512 + Sha256 = 0, + Sha512 = 1 } -export class ClientSecret { - type = '' - value = '' +export class SecretCreateOrUpdate extends SecretBase { hashType = HashType.Sha256 - description? = '' - expiration? = undefined -} - -export class ClientRedirectUri { - redirectUri = '' -} - -export class ClientClaim { - type = '' - value = '' -} - -export class ClientCorsOrigin { - origin = '' -} - -export class ClientGrantType { - grantType = '' -} - -export class ClientIdPRestriction { - provider = '' -} - -export class ClientPostLogoutRedirectUri { - postLogoutRedirectUri = '' -} - -export class ClientProperty { - key = '' - value = '' -} - -export class ClientScope { - scope = '' } -export class ClientSecretCreate extends ClientSecret { - clientId!: string - - constructor() { - super() - this.type = 'SharedSecret' - this.hashType = HashType.Sha256 - } -} - -export class ClientClaimCreate extends ClientClaim { - clientId!: string -} - -export class ClientPropertyCreate extends ClientProperty { - clientId!: string +export class ClientGetByPaged extends PagedAndSortedResultRequestDto { + filter = '' } -export class ClientCreate { - clientId = '' - clientName = '' - description? = '' - allowedGrantTypes?: ClientGrantType[] +export class ClientClaim extends Claim {} - constructor() { - this.allowedGrantTypes = new Array() - } -} +export class ClientSecret extends SecretCreateOrUpdate {} export class ClientClone { sourceClientId = '' @@ -168,6 +79,7 @@ export class ClientClone { copyRedirectUri = true copyAllowedScope = true copyClaim = true + copySecret = true copyAllowedCorsOrigin = true copyPostLogoutRedirectUri = true copyPropertie = true @@ -218,39 +130,27 @@ export class Client extends FullAuditedEntityDto { userSsoLifetime!: number userCodeType?: string deviceCodeLifetime!: number - allowedScopes!: ClientScope[] - clientSecrets!: ClientSecret[] - allowedGrantTypes!: ClientGrantType[] - allowedCorsOrigins!: ClientCorsOrigin[] - redirectUris!: ClientRedirectUri[] - postLogoutRedirectUris!: ClientPostLogoutRedirectUri[] - identityProviderRestrictions!: ClientIdPRestriction[] - claims!: ClientClaim[] - properties!: ClientProperty[] - - constructor() { - super() - this.allowedScopes = new Array() - this.clientSecrets = new Array() - this.allowedGrantTypes = new Array() - this.allowedCorsOrigins = new Array() - this.redirectUris = new Array() - this.postLogoutRedirectUris = new Array() - this.identityProviderRestrictions = new Array() - this.claims = new Array() - this.properties = new Array() - } - - public static empty() { - return new Client() - } -} - -export class ClientUpdateData { - concurrencyStamp!: string + allowedScopes = new Array() + clientSecrets = new Array() + allowedGrantTypes = new Array() + allowedCorsOrigins = new Array() + redirectUris = new Array() + postLogoutRedirectUris = new Array() + identityProviderRestrictions = new Array() + claims = new Array() + properties:{[key: string]: string} = {} +} + +export class ClientCreateOrUpdate { clientId = '' clientName = '' description? = '' + allowedGrantTypes = new Array() +} + +export class ClientCreate extends ClientCreateOrUpdate {} + +export class ClientUpdate extends ClientCreateOrUpdate { clientUri? = '' logoUri? = '' enabled = true @@ -266,7 +166,7 @@ export class ClientUpdateData { frontChannelLogoutSessionRequired = true backChannelLogoutUri? = '' backChannelLogoutSessionRequired = true - allowOfflineAccess = false + allowOfflineAccess = true identityTokenLifetime = 300 accessTokenLifetime = 3600 authorizationCodeLifetime = 300 @@ -285,75 +185,57 @@ export class ClientUpdateData { userSsoLifetime!: number userCodeType? = '' deviceCodeLifetime = 300 - allowedScopes!: ClientScope[] - allowedGrantTypes!: ClientGrantType[] - allowedCorsOrigins!: ClientCorsOrigin[] - redirectUris!: ClientRedirectUri[] - postLogoutRedirectUris!: ClientPostLogoutRedirectUri[] - identityProviderRestrictions!: ClientIdPRestriction[] - - constructor() { - this.allowedScopes = new Array() - this.allowedGrantTypes = new Array() - this.allowedCorsOrigins = new Array() - this.redirectUris = new Array() - this.postLogoutRedirectUris = new Array() - this.identityProviderRestrictions = new Array() - } - - public setClient(client: Client) { - this.absoluteRefreshTokenLifetime = client.absoluteRefreshTokenLifetime - this.accessTokenLifetime = client.accessTokenLifetime - this.accessTokenType = client.accessTokenType - this.allowAccessTokensViaBrowser = client.allowAccessTokensViaBrowser - this.allowOfflineAccess = client.allowOfflineAccess - this.allowPlainTextPkce = client.allowPlainTextPkce - this.allowRememberConsent = client.allowRememberConsent - this.allowedCorsOrigins = client.allowedCorsOrigins - this.allowedGrantTypes = client.allowedGrantTypes - this.allowedScopes = client.allowedScopes - this.alwaysIncludeUserClaimsInIdToken = client.alwaysIncludeUserClaimsInIdToken - this.alwaysSendClientClaims = client.alwaysSendClientClaims - this.authorizationCodeLifetime = client.authorizationCodeLifetime - this.backChannelLogoutSessionRequired = client.backChannelLogoutSessionRequired - this.backChannelLogoutUri = client.backChannelLogoutUri - this.clientClaimsPrefix = client.clientClaimsPrefix - this.clientId = client.clientId - this.clientName = client.clientName + allowedScopes = new Array() + allowedCorsOrigins = new Array() + redirectUris = new Array() + postLogoutRedirectUris = new Array() + identityProviderRestrictions = new Array() + properties: {[key: string]: string} = {} + secrets = new Array() + claims = new Array() + + public updateByClient(client: Client) { this.clientUri = client.clientUri - this.concurrencyStamp = client.concurrencyStamp - this.consentLifetime = client.consentLifetime - this.description = client.description - this.deviceCodeLifetime = client.deviceCodeLifetime - this.enableLocalLogin = client.enableLocalLogin - this.enabled = client.enabled - this.frontChannelLogoutSessionRequired = client.frontChannelLogoutSessionRequired - this.frontChannelLogoutUri = client.frontChannelLogoutUri - this.identityProviderRestrictions = client.identityProviderRestrictions - this.identityTokenLifetime = client.identityTokenLifetime - this.includeJwtId = client.includeJwtId this.logoUri = client.logoUri - this.pairWiseSubjectSalt = client.pairWiseSubjectSalt - this.postLogoutRedirectUris = client.postLogoutRedirectUris + this.enabled = client.enabled this.protocolType = client.protocolType - this.redirectUris = client.redirectUris - this.refreshTokenExpiration = client.refreshTokenExpiration - this.refreshTokenUsage = client.refreshTokenUsage this.requireClientSecret = client.requireClientSecret this.requireConsent = client.requireConsent + this.allowRememberConsent = client.allowRememberConsent + this.alwaysIncludeUserClaimsInIdToken = client.alwaysIncludeUserClaimsInIdToken this.requirePkce = client.requirePkce + this.allowPlainTextPkce = client.allowPlainTextPkce + this.allowAccessTokensViaBrowser = client.allowAccessTokensViaBrowser + this.frontChannelLogoutUri = client.frontChannelLogoutUri + this.frontChannelLogoutSessionRequired = client.frontChannelLogoutSessionRequired + this.backChannelLogoutUri = client.backChannelLogoutUri + this.backChannelLogoutSessionRequired = client.backChannelLogoutSessionRequired + this.allowOfflineAccess = client.allowOfflineAccess + this.identityTokenLifetime = client.identityTokenLifetime + this.accessTokenLifetime = client.accessTokenLifetime + this.authorizationCodeLifetime = client.authorizationCodeLifetime + this.consentLifetime = client.consentLifetime + this.absoluteRefreshTokenLifetime = client.absoluteRefreshTokenLifetime this.slidingRefreshTokenLifetime = client.slidingRefreshTokenLifetime + this.refreshTokenUsage = client.refreshTokenUsage this.updateAccessTokenClaimsOnRefresh = client.updateAccessTokenClaimsOnRefresh - this.userCodeType = client.userCodeType + this.refreshTokenExpiration = client.refreshTokenExpiration + this.accessTokenType = client.accessTokenType + this.enableLocalLogin = client.enableLocalLogin + this.includeJwtId = client.includeJwtId + this.alwaysSendClientClaims = client.alwaysSendClientClaims + this.clientClaimsPrefix = client.clientClaimsPrefix + this.pairWiseSubjectSalt = client.pairWiseSubjectSalt this.userSsoLifetime = client.userSsoLifetime - } -} - -export class ClientUpdate { - id!: string - client!: ClientUpdateData - - constructor() { - this.client = new ClientUpdateData() + this.userCodeType = client.userCodeType + this.deviceCodeLifetime = client.deviceCodeLifetime + this.allowedCorsOrigins = client.allowedCorsOrigins + this.redirectUris = client.redirectUris + this.postLogoutRedirectUris = client.postLogoutRedirectUris + this.identityProviderRestrictions = client.identityProviderRestrictions + this.allowedScopes = client.allowedScopes + this.secrets = client.clientSecrets + this.claims = client.claims + this.properties = client.properties } } diff --git a/vueJs/src/api/identity-resources.ts b/vueJs/src/api/identity-resources.ts new file mode 100644 index 000000000..3928d82c2 --- /dev/null +++ b/vueJs/src/api/identity-resources.ts @@ -0,0 +1,89 @@ +import ApiService from './serviceBase' +import { FullAuditedEntityDto, PagedResultDto, PagedAndSortedResultRequestDto } from './types' + +const sourceUrl = '/api/identity-server/identity-resources' +/** 远程服务地址 */ +const serviceUrl = process.env.VUE_APP_BASE_API + +/** 身份资源Api接口 */ +export default class IdentityResourceService { + /** + * 获取身份资源 + * @param id 身份资源标识 + * @returns 返回类型为 IdentityResource 的对象 + */ + public static getIdentityResourceById(id: string) { + const _url = sourceUrl + '/' + id + return ApiService.Get(_url, serviceUrl) + } + + /** + * 获取身份资源列表 + * @param payload 分页查询过滤对象 + * @returns 返回类型为 IdentityResource 的对象列表 + */ + public static getIdentityResources(payload: IdentityResourceGetByPaged) { + let _url = sourceUrl + '?filter=' + payload.filter + _url += '&sorting=' + payload.sorting + _url += '&skipCount=' + payload.skipCount + _url += '&maxResultCount=' + payload.maxResultCount + return ApiService.Get>(_url, serviceUrl) + } + + /** + * 创建身份资源 + * @param payload 类型为 IdentityResourceCreate 的对象 + * @returns 返回类型为 IdentityResource 的对象 + */ + public static createIdentityResource(payload: IdentityResourceCreateOrUpdate) { + return ApiService.Post(sourceUrl, payload, serviceUrl) + } + + /** + * 变更身份资源 + * @param payload 类型为 IdentityResourceUpdate 的对象 + * @returns 返回类型为 IdentityResource 的对象 + */ + public static updateIdentityResource(id: string, payload: IdentityResourceCreateOrUpdate) { + const _url = sourceUrl + '/' + id + return ApiService.Put(_url, payload, serviceUrl) + } + + /** + * 删除身份资源 + * @param id 身份资源标识 + */ + public static deleteIdentityResource(id: string) { + const _url = sourceUrl + '/' + id + return ApiService.Delete(_url, serviceUrl) + } +} + +export class IdentityResource extends FullAuditedEntityDto { + id!: string + name = '' + displayName?: string = '' + description?: string = '' + enabled = true + required = false + emphasize = false + showInDiscoveryDocument = true + userClaims = new Array() + properties: {[key: string]: string} = {} +} + +export class IdentityResourceGetByPaged extends PagedAndSortedResultRequestDto { + filter = '' +} + +export class IdentityResourceCreateOrUpdate { + name = '' + displayName?: string = '' + description?: string = '' + enabled = true + required = false + emphasize = false + showInDiscoveryDocument = true + userClaims = new Array() + properties: {[key: string]: string} = {} +} diff --git a/vueJs/src/api/identity-server4.ts b/vueJs/src/api/identity-server4.ts new file mode 100644 index 000000000..c3b15daea --- /dev/null +++ b/vueJs/src/api/identity-server4.ts @@ -0,0 +1,36 @@ +import ApiService from './serviceBase' + +const openIdConfigurationUrl = '/.well-known/openid-configuration' + +export default class IdentityServer4Service { + public static getOpenIdConfiguration() { + return ApiService.Get(openIdConfigurationUrl) + } +} + +export class OpenIdConfiguration { + issuer!: string + jwks_uri!: string + authorization_endpoint!: string + token_endpoint!: string + userinfo_endpoint!: string + end_session_endpoint!: string + check_session_iframe!: string + revocation_endpoint!: string + introspection_endpoint!: string + device_authorization_endpoint!: string + frontchannel_logout_supported!: boolean + frontchannel_logout_session_supported!: boolean + backchannel_logout_supported!: boolean + backchannel_logout_session_supported!: boolean + scopes_supported = new Array() + claims_supported = new Array() + grant_types_supported = new Array() + response_types_supported = new Array() + response_modes_supported = new Array() + token_endpoint_auth_methods_supported = new Array() + id_token_signing_alg_values_supported = new Array() + subject_types_supported = new Array() + code_challenge_methods_supported = new Array() + request_parameter_supported!: boolean +} diff --git a/vueJs/src/api/identityresources.ts b/vueJs/src/api/identityresources.ts deleted file mode 100644 index d5594c17b..000000000 --- a/vueJs/src/api/identityresources.ts +++ /dev/null @@ -1,244 +0,0 @@ -import ApiService from './serviceBase' -import { FullAuditedEntityDto, PagedResultDto, PagedAndSortedResultRequestDto } from './types' - -/** 远程服务地址 */ -const serviceUrl = process.env.VUE_APP_BASE_API - -/** 身份资源Api接口 */ -export default class IdentityResourceService { - /** - * 获取身份资源 - * @param id 身份资源标识 - * @returns 返回类型为 IdentityResource 的对象 - */ - public static getIdentityResourceById(id: string) { - let _url = '/api/IdentityServer/IdentityResources/' - _url += id - return ApiService.Get(_url, serviceUrl) - } - - /** - * 获取身份资源列表 - * @param payload 分页查询过滤对象 - * @returns 返回类型为 IdentityResource 的对象列表 - */ - public static getIdentityResources(payload: IdentityResourceGetByPaged) { - let _url = '/api/IdentityServer/IdentityResources' - _url += '?filter=' + payload.filter - _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + payload.skipCount - _url += '&maxResultCount=' + payload.maxResultCount - return ApiService.Get>(_url, serviceUrl) - } - - /** - * 创建身份资源 - * @param payload 类型为 IdentityResourceCreate 的对象 - * @returns 返回类型为 IdentityResource 的对象 - */ - public static createIdentityResource(payload: IdentityResourceCreate) { - const _url = '/api/IdentityServer/IdentityResources' - return ApiService.Post(_url, payload, serviceUrl) - } - - /** - * 变更身份资源 - * @param payload 类型为 IdentityResourceUpdate 的对象 - * @returns 返回类型为 IdentityResource 的对象 - */ - public static updateIdentityResource(payload: IdentityResourceUpdate) { - const _url = '/api/IdentityServer/IdentityResources' - return ApiService.Put(_url, payload, serviceUrl) - } - - /** - * 删除身份资源 - * @param id 身份资源标识 - */ - public static deleteIdentityResource(id: string) { - let _url = '/api/IdentityServer/IdentityResources' - _url += '?id=' + id - return ApiService.Delete(_url, serviceUrl) - } - - /** - * 创建身份资源属性 - * @param payload 类型为 IdentityPropertyCreate 的对象 - * @returns 返回类型为 IdentityProperty 的对象 - */ - public static createProperty(payload: IdentityPropertyCreate) { - const _url = '/api/IdentityServer/IdentityResources/Properties' - return ApiService.Post(_url, payload, serviceUrl) - } - - /** - * 删除身份资源属性 - * @param identityResourceId 身份资源标识 - * @param key 身份资源属性键 - */ - public static deleteProperty(identityResourceId: string, key: string) { - let _url = '/api/IdentityServer/IdentityResources/Properties' - _url += '?identityResourceId=' + identityResourceId - _url += '&key=' + key - return ApiService.Delete(_url, serviceUrl) - } -} - -/** 身份资源用户声明 */ -export class IdentityClaim { - /** 用户声明 */ - type = '' -} - -/** 身份资源属性 */ -export class IdentityProperty { - /** 键 */ - key = '' - /** 值 */ - value = '' -} - -/** 身份资源属性创建对象 */ -export class IdentityPropertyCreate { - /** 身份资源标识 */ - identityResourceId = '' - /** 键 */ - key = '' - /** 值 */ - value = '' - /** 并发令牌 */ - concurrencyStamp = '' - - /** 返回一个空对象 */ - public static empty() { - return new IdentityPropertyCreate() - } -} - -/** 身份资源分页查询对象 */ -export class IdentityResourceGetByPaged extends PagedAndSortedResultRequestDto { - /** 过滤参数 */ - filter = '' - - /** 返回一个空对象 */ - public static empty() { - return new IdentityResourceGetByPaged() - } -} - -/** 身份资源创建对象 */ -export class IdentityResourceCreate { - /** 名称 */ - name = '' - /** 显示名称 */ - displayName? = '' - /** 说明 */ - description? = '' - /** 启用 */ - enabled = true - /** 必须 */ - required = false - /** 强调 */ - emphasize = false - /** 在发现文档显示 */ - showInDiscoveryDocument = false - /** 用户声明 */ - userClaims = new Array() - - /** 返回一个空对象 */ - public static empty() { - return new IdentityResourceCreate() - } - - /** 创建身份资源 */ - public static create(identityResource: IdentityResource) { - const resource = new IdentityResourceCreate() - resource.description = identityResource.description - resource.displayName = identityResource.displayName - resource.emphasize = identityResource.emphasize - resource.enabled = identityResource.enabled - resource.name = identityResource.name - resource.required = identityResource.required - resource.showInDiscoveryDocument = identityResource.showInDiscoveryDocument - resource.userClaims = identityResource.userClaims - return resource - } -} - -/** 身份资源变更对象 */ -export class IdentityResourceUpdate { - /** 身份资源标识 */ - id = '' - /** 名称 */ - name = '' - /** 显示名称 */ - displayName? = '' - /** 说明 */ - description? = '' - /** 启用 */ - enabled = true - /** 必须 */ - required = false - /** 强调 */ - emphasize = false - /** 在发现文档显示 */ - showInDiscoveryDocument = false - /** 并发令牌 */ - concurrencyStamp = '' - /** 用户声明 */ - userClaims = new Array() - - /** 返回一个空对象 */ - public static empty() { - return new IdentityResourceUpdate() - } - - /** 创建身份资源 */ - public static create(identityResource: IdentityResource) { - const resource = new IdentityResourceUpdate() - resource.concurrencyStamp = identityResource.concurrencyStamp - resource.description = identityResource.description - resource.displayName = identityResource.displayName - resource.emphasize = identityResource.emphasize - resource.enabled = identityResource.enabled - resource.id = identityResource.id - resource.name = identityResource.name - resource.required = identityResource.required - resource.showInDiscoveryDocument = identityResource.showInDiscoveryDocument - resource.userClaims = identityResource.userClaims - return resource - } -} - -/** 身份资源对象 */ -export class IdentityResource extends FullAuditedEntityDto { - /** 身份资源标识 */ - id!: string - /** 名称 */ - name!: string - /** 显示名称 */ - displayName?: string - /** 说明 */ - description?: string - /** 并发令牌 */ - concurrencyStamp!: string - /** 启用 */ - enabled!: boolean - /** 必须 */ - required!: boolean - /** 强调 */ - emphasize!: boolean - /** 在发现文档显示 */ - showInDiscoveryDocument!: boolean - /** 用户声明 */ - userClaims!: IdentityClaim[] - /** 属性 */ - properties!: IdentityProperty[] - - /** 返回一个空对象 */ - public static empty() { - const resource = new IdentityResource() - resource.enabled = true - return resource - } -} diff --git a/vueJs/src/api/permission.ts b/vueJs/src/api/permission.ts index 549712c03..f5db9d623 100644 --- a/vueJs/src/api/permission.ts +++ b/vueJs/src/api/permission.ts @@ -30,17 +30,29 @@ export default class PermissionService { } } +export class UpdatePermissionDto implements IPermission { + name!: string + isGranted!: boolean + + constructor( + name: string, + isGranted: boolean + ) { + this.name = name + this.isGranted = isGranted + } +} + export class UpdatePermissionsDto { permissions!: UpdatePermissionDto[] constructor() { this.permissions = new Array() } -} -export class UpdatePermissionDto implements IPermission { - name!: string - isGranted!: boolean + public addPermission(name: string, isGranted: boolean) { + this.permissions.push(new UpdatePermissionDto(name, isGranted)) + } } export class PermissionProvider { diff --git a/vueJs/src/api/roles.ts b/vueJs/src/api/roles.ts index c4911af75..a69cb931b 100644 --- a/vueJs/src/api/roles.ts +++ b/vueJs/src/api/roles.ts @@ -50,6 +50,28 @@ export default class RoleService { _url += id return ApiService.Delete(_url, IdentityServiceUrl) } + + public static getRoleClaims(roleId: string) { + const _url = '/api/identity/roles/claims/' + roleId + return ApiService.Get>(_url, IdentityServiceUrl) + } + + public static addRoleClaim(roleId: string, payload: RoleClaimCreateOrUpdate) { + const _url = '/api/identity/roles/claims/' + roleId + return ApiService.Post(_url, payload, IdentityServiceUrl) + } + + public static updateRoleClaim(roleId: string, payload: RoleClaimCreateOrUpdate) { + const _url = '/api/identity/roles/claims/' + roleId + return ApiService.Put(_url, payload, IdentityServiceUrl) + } + + public static deleteRoleClaim(roleId: string, payload: RoleClaimDelete) { + let _url = '/api/identity/roles/claims/' + roleId + _url += '?claimType=' + payload.claimType + _url += '&claimValue=' + payload.claimValue + return ApiService.Delete(_url, IdentityServiceUrl) + } } export class RoleBaseDto { @@ -73,6 +95,7 @@ export class CreateRoleDto extends RoleBaseDto { super() this.isDefault = false this.isPublic = true + this.name = '' } } @@ -89,3 +112,17 @@ export class UpdateRoleDto extends RoleBaseDto { export class ChangeRoleOrganizationUnitDto { organizationUnitIds = new Array() } + +export class RoleClaimCreateOrUpdate { + claimType = '' + claimValue = '' +} + +export class RoleClaimDelete { + claimType = '' + claimValue = '' +} + +export class RoleClaim extends RoleClaimCreateOrUpdate { + id!: string +} diff --git a/vueJs/src/api/types.ts b/vueJs/src/api/types.ts index 70fc8725a..a1e873cd4 100644 --- a/vueJs/src/api/types.ts +++ b/vueJs/src/api/types.ts @@ -251,3 +251,28 @@ export interface IClaim { /** 数值 */ value: string } + +export class SecretBase implements ISecret { + type = '' + value = '' + description = '' + expiration: Date | undefined +} + +export enum HashType { + Sha256, + Sha512 +} + +export class Claim implements IClaim { + type = '' + value = '' + + constructor( + type: string, + value: string + ) { + this.type = type + this.value = value + } +} diff --git a/vueJs/src/api/users.ts b/vueJs/src/api/users.ts index 587955894..ba01efa95 100644 --- a/vueJs/src/api/users.ts +++ b/vueJs/src/api/users.ts @@ -1,5 +1,5 @@ import qs from 'querystring' -import { PagedAndSortedResultRequestDto, FullAuditedEntityDto, PagedResultDto, ListResultDto } from '@/api/types' +import { PagedAndSortedResultRequestDto, FullAuditedEntityDto, PagedResultDto, ListResultDto, ExtensibleObject } from '@/api/types' import { OrganizationUnit } from './organizationunit' import ApiService from './serviceBase' @@ -17,25 +17,25 @@ export default class UserApiService { if (input.filter) { _url += '&filter=' + input.filter } - return ApiService.Get>(_url, IdentityServiceUrl) + return ApiService.Get>(_url, IdentityServiceUrl) } public static getUserById(userId: string) { let _url = '/api/identity/users/' _url += userId - return ApiService.Get(_url, IdentityServiceUrl) + return ApiService.Get(_url, IdentityServiceUrl) } public static getUserByName(userName: string) { let _url = '/api/identity/users/by-username/' _url += userName - return ApiService.Get(_url, IdentityServiceUrl) + return ApiService.Get(_url, IdentityServiceUrl) } - public static updateUser(userId: string | undefined, userData: UserUpdateDto) { + public static updateUser(userId: string, userData: UserUpdate) { let _url = '/api/identity/users/' _url += userId - return ApiService.Put(_url, userData, IdentityServiceUrl) + return ApiService.Put(_url, userData, IdentityServiceUrl) } public static deleteUser(userId: string | undefined) { @@ -44,9 +44,9 @@ export default class UserApiService { return ApiService.Delete(_url, IdentityServiceUrl) } - public static createUser(userData: UserCreateDto) { + public static createUser(userData: UserCreate) { const _url = '/api/identity/users' - return ApiService.Post(_url, userData, IdentityServiceUrl) + return ApiService.Post(_url, userData, IdentityServiceUrl) } public static getUserRoles(userId: string) { @@ -122,7 +122,7 @@ export default class UserApiService { public static userRegister(registerData: UserRegisterData) { const _url = '/api/account/phone/register' - return ApiService.HttpRequest({ + return ApiService.HttpRequest({ baseURL: IdentityServiceUrl, url: _url, method: 'POST', @@ -317,34 +317,6 @@ export class UserLoginResult { refresh_token!: string } -/** 创建用户对象 */ -export class UserCreateDto { - /** 用户名 */ - name!: string - /** 用户账户 */ - userName!: string - /** 用户密码 */ - password!: string - /** 用户简称 */ - surname?: string - /** 邮件地址 */ - email!: string - /** 联系方式 */ - phoneNumber: number | undefined - /** 双因素验证 */ - twoFactorEnabled!: boolean - /** 登录失败锁定 */ - lockoutEnabled!: boolean - /** 用户列表 */ - roleNames?: string[] - - constructor() { - this.twoFactorEnabled = false - this.lockoutEnabled = true - this.roleNames = new Array() - } -} - /** 用户密码变更对象 */ export class UserChangePasswordDto { /** 当前密码 */ @@ -375,68 +347,68 @@ export class UserRole implements IUserRole { isStatic!: boolean /** 是否公共角色 */ isPublic!: boolean - /** 并发令牌 */ - concurrencyStamp: string | undefined } -/** 变更用户对象 */ -export class UserUpdateDto implements IUserData { +export class UserCreateOrUpdate extends ExtensibleObject { /** 用户名 */ - name!: string; + name = '' /** 用户账户 */ - userName!: string; + userName = '' /** 用户简称 */ - surname?: string; + surname = '' /** 邮件地址 */ - email!: string; + email = '' /** 联系方式 */ - phoneNumber?: number; - /** 双因素验证 */ - twoFactorEnabled!: boolean; + phoneNumber = '' /** 登录锁定 */ - lockoutEnabled!: boolean; + lockoutEnabled = false + /** 角色列表 */ + roleNames: string[] | null = null + /** 密码 */ + password: string | null = null +} + +/** 变更用户对象 */ +export class UserUpdate extends UserCreateOrUpdate { /** 并发令牌 */ - concurrencyStamp!: string; - /** 用户角色列表 */ - roles: string[] + concurrencyStamp = '' +} - constructor() { - this.roles = new Array() - } +export class UserCreate extends UserCreateOrUpdate { } /** 用户对象 */ -export class UserDataDto extends FullAuditedEntityDto implements IUserData { +export class User extends FullAuditedEntityDto implements IUser { /** 用户名 */ - name!: string + name = '' /** 用户账户 */ - userName!: string + userName = '' /** 用户简称 */ - surname!: string + surname = '' /** 邮件地址 */ - email!: string + email = '' /** 联系方式 */ - phoneNumber?: number + phoneNumber = '' /** 双因素验证 */ - twoFactorEnabled!: boolean + twoFactorEnabled = false /** 登录锁定 */ - lockoutEnabled!: boolean - /** 并发令牌 */ - concurrencyStamp!: string + lockoutEnabled = false /** 用户标识 */ - id!: string + id = '' /** 租户标识 */ - tenentId: string | undefined + tenentId? = '' /** 邮箱已验证 */ - emailConfirmed!: boolean + emailConfirmed = false /** 联系方式已验证 */ - phoneNumberConfirmed!: boolean + phoneNumberConfirmed = false /** 锁定截止时间 */ - lockoutEnd: Date | undefined + lockoutEnd?: Date = undefined + /** 并发令牌 */ + concurrencyStamp = '' } /** 用户对象接口 */ -export interface IUserData { +export interface IUser { /** 用户名 */ name: string /** 用户账户 */ @@ -446,13 +418,11 @@ export interface IUserData { /** 邮件地址 */ email: string /** 联系方式 */ - phoneNumber?: number + phoneNumber?: string /** 双因素验证 */ twoFactorEnabled: boolean /** 登录锁定 */ lockoutEnabled: boolean - /** 锁定截止时间 */ - concurrencyStamp: string | undefined } /** 用户角色接口 */ @@ -467,8 +437,6 @@ export interface IUserRole { isStatic: boolean /** 公共角色 */ isPublic: boolean - /** 并发令牌 */ - concurrencyStamp: string | undefined } export class ChangeUserOrganizationUnitDto { diff --git a/vueJs/src/components/PermissionForm/index.vue b/vueJs/src/components/PermissionForm/index.vue new file mode 100644 index 000000000..0378882f1 --- /dev/null +++ b/vueJs/src/components/PermissionForm/index.vue @@ -0,0 +1,473 @@ + + + + + diff --git a/vueJs/src/components/PermissionTree/index.vue b/vueJs/src/components/PermissionTree/index.vue deleted file mode 100644 index e42854623..000000000 --- a/vueJs/src/components/PermissionTree/index.vue +++ /dev/null @@ -1,236 +0,0 @@ - - - - - diff --git a/vueJs/src/lang/en.ts b/vueJs/src/lang/en.ts index 00e8a8fa1..731253f2c 100644 --- a/vueJs/src/lang/en.ts +++ b/vueJs/src/lang/en.ts @@ -427,148 +427,6 @@ export default { aggregateJsonPath: 'Json路径', definedAggregatorProviders: '聚合提供者' }, - identityServer: { - otherOpera: '更多操作', - enabled: '启用客户端', - disbled: '停用客户端', - clientStatus: '客户端状态', - deleteClient: '删除客户端', - updateClient: '编辑客户端', - updateClientByName: '编辑客户端 {name}', - deleteClientById: '是否要删除客户端: {id}', - deleteClientSuccess: '客户端: {id} 已删除!', - createClientSuccess: '客户端: {id} 已添加!', - updateClientSuccess: '客户端: {id} 已修改!', - clientClaim: '客户端声明', - clientProperty: '客户端属性', - clientSecret: '客户端密钥', - clientPermission: '客户端权限', - deleteSecret: '删除密钥', - deleteSecretByType: '是否要删除客户端密钥: {type}', - deleteSecretSuccess: '客户端密钥: {type} 已删除!', - createSecretSuccess: '客户端密钥: {type} 已添加!', - createSecret: '添加客户端密钥', - deleteClaim: '删除声明', - deleteClaimByType: '是否要删除客户端声明: {type}', - deleteClaimSuccess: '客户端声明: {type} 已删除!', - createClaimSuccess: '客户端声明: {type} 已添加!', - createClaim: '添加客户端声明', - deleteProperty: '删除属性', - deleteClientPropertyByType: '是否要删除客户端属性: {key}', - deleteClientPropertySuccess: '客户端属性: {key} 已删除!', - createClientPropertySuccess: '客户端属性: {key} 已添加!', - createClientProperty: '添加客户端属性', - createClient: '添加客户端', - clientId: '客户端标识', - clientName: '客户端名称', - description: '客户端说明', - cloneClint: '克隆客户端', - copyAllowedGrantType: '复制客户端授权类型', - copyRedirectUri: '复制客户端重定向Uri', - copyAllowedScope: '复制客户端作用域', - copyClaim: '复制客户端声明', - copyAllowedCorsOrigin: '复制客户端跨域来源', - copyPostLogoutRedirectUri: '复制客户端注销重定向Uri', - copyPropertie: '复制客户端属性', - copyIdentityProviderRestriction: '复制身份提供程序限制', - protocolType: '协议类型', - requireClientSecret: '需要客户端密钥', - requirePkce: '需要Pkce', - allowPlainTextPkce: '允许纯文本Pkce', - allowOfflineAccess: '允许离线访问', - allowedScopes: '允许的作用域', - redirectUris: '重定向Uri', - allowedGrantTypes: '允许的授权类型', - allowAccessTokensViaBrowser: '允许通过浏览器访问令牌', - identityTokenLifetime: '身份令牌有效期(s)', - accessTokenLifetime: '访问令牌有效期(s)', - authorizationCodeLifetime: '授权码有效期(s)', - absoluteRefreshTokenLifetime: '绝对刷新令牌有效期(s)', - slidingRefreshTokenLifetime: '滚动刷新令牌有效期(s)', - deviceCodeLifetime: '设备授权码有效期(s)', - clientClaimsPrefix: '客户端声明前缀', - basicOptions: '基本设置', - frontChannelLogoutUri: '前端通道注销 Uri', - frontChannelLogoutSessionRequired: '需要前端通道注销会话', - backChannelLogoutUri: '后端通道退出 Uri', - backChannelLogoutSessionRequired: '需要后端通道注销会话', - enableLocalLogin: '启用本地登录', - postLogoutRedirectUris: '注销重定向 Uri', - identityProviderRestrictions: '身份提供程序限制', - userSsoLifetime: '用户 SSO 生命周期', - accessTokenType: '访问令牌类型', - refreshTokenUsage: '刷新令牌使用情况', - refreshTokenExpiration: '刷新令牌过期方式', - allowedCorsOrigins: '允许跨域来源', - updateAccessTokenClaimsOnRefresh: '刷新时更新访问令牌声明', - includeJwtId: '包括 Jwt 标识', - alwaysSendClientClaims: '始终发送客户端声明', - alwaysIncludeUserClaimsInIdToken: '始终在标识令牌中包含用户声明', - pairWiseSubjectSalt: '配对主体盐', - requireConsent: '需要同意', - allowRememberConsent: '允许记住同意', - clientUri: '客户端 Uri', - logoUri: '徽标 Uri', - userCodeType: '用户代码类型', - secretType: '密钥类型', - secretValue: '密钥值', - secretHashType: '哈希类型', - hashOnlySharedSecret: '哈希类型仅适用于 SharedSecret 类型', - secretDescription: '密钥说明', - expiration: '过期日期', - claimType: '声明类型', - claimValue: '声明值', - propertyKey: '属性名称', - propertyValue: '属性值', - createApiResource: '添加Api资源', - updateApiResource: '编辑Api资源', - updateApiResourceByName: '编辑Api资源 {name}', - deleteApiResourceByName: '删除Api资源 {name}', - createApiResourceSuccess: 'Api资源 {name} 已添加!', - deleteApiResourceSuccess: 'Api资源 {name} 已删除!', - updateApiResourceSuccess: 'Api资源 {name} 已修改!', - createApiSecret: '添加Api密钥', - deleteApiSecret: '删除Api密钥', - deleteApiSecretByType: '删除Api密钥 {type}', - createApiSecretSuccess: 'Api密钥 {type} 已添加!', - deleteApiSecretSuccess: 'Api密钥 {type} 已删除!', - apiResourceSecret: 'Api 密钥', - createApiScope: '添加Api作用域', - deleteApiScope: '删除Api作用域', - deleteApiScopeByName: '删除Api作用域 {name}', - createApiScopeSuccess: 'Api作用域 {name} 已添加!', - deleteApiScopeSuccess: 'Api作用域 {name} 已删除!', - apiResourceScope: 'Api 作用域', - deleteApiResource: '删除资源', - resourceName: '资源名称', - resourceDisplayName: '显示名称', - enabledResource: '启用资源', - resourceStatus: '资源状态', - resourceDescription: '资源说明', - resourceUserClaims: '用户声明', - apiScopeName: '名称', - apiScopeDisplayName: '显示名称', - apiScopeDescription: '描述', - apiScopeRequired: '必须', - apiScopeEmphasize: '强调', - apiScopeShowInDiscoveryDocument: '在发现文档显示', - createIdentityResource: '添加身份资源', - updateIdentityResource: '编辑身份资源', - identityResourceProperties: '资源属性', - deleteIdentityResource: '删除资源', - updateIdentityResourceByName: '编辑身份资源 {name}', - deleteIdentityResourceByName: '删除身份资源 {name}', - createIdentityResourceSuccess: '身份资源 {name} 已添加!', - deleteIdentityResourceSuccess: '身份资源 {name} 已删除!', - updateIdentityResourceSuccess: '身份资源 {name} 已修改!', - identityResourceRequired: '必须', - identityResourceEmphasize: '强调', - identityResourceShowInDiscoveryDocument: '在发现文档显示', - deleteIdentityPropertyByKey: '是否要删除身份资源属性: {key}', - deleteIdentityPropertySuccess: '身份资源属性: {key} 已删除!', - createIdentityPropertySuccess: '身份资源属性: {key} 已添加!', - createIdentityProperty: '添加身份资源属性' - }, tenant: { createTenant: '创建租户', updateTenant: '编辑租户', diff --git a/vueJs/src/lang/zh.ts b/vueJs/src/lang/zh.ts index f0260b3dc..65015b454 100644 --- a/vueJs/src/lang/zh.ts +++ b/vueJs/src/lang/zh.ts @@ -431,148 +431,6 @@ export default { aggregateJsonPath: 'Json路径', definedAggregatorProviders: '聚合提供者' }, - identityServer: { - otherOpera: '更多操作', - enabled: '启用客户端', - disbled: '停用客户端', - clientStatus: '客户端状态', - deleteClient: '删除客户端', - updateClient: '编辑客户端', - updateClientByName: '编辑客户端 {name}', - deleteClientById: '是否要删除客户端: {id}', - deleteClientSuccess: '客户端: {id} 已删除!', - createClientSuccess: '客户端: {id} 已添加!', - updateClientSuccess: '客户端: {id} 已修改!', - clientClaim: '客户端声明', - clientProperty: '客户端属性', - clientSecret: '客户端密钥', - clientPermission: '客户端权限', - deleteSecret: '删除密钥', - deleteSecretByType: '是否要删除客户端密钥: {type}', - deleteSecretSuccess: '客户端密钥: {type} 已删除!', - createSecretSuccess: '客户端密钥: {type} 已添加!', - createSecret: '添加客户端密钥', - deleteClaim: '删除声明', - deleteClaimByType: '是否要删除客户端声明: {type}', - deleteClaimSuccess: '客户端声明: {type} 已删除!', - createClaimSuccess: '客户端声明: {type} 已添加!', - createClaim: '添加客户端声明', - deleteProperty: '删除属性', - deleteClientPropertyByType: '是否要删除客户端属性: {key}', - deleteClientPropertySuccess: '客户端属性: {key} 已删除!', - createClientPropertySuccess: '客户端属性: {key} 已添加!', - createClientProperty: '添加客户端属性', - createClient: '添加客户端', - clientId: '客户端标识', - clientName: '客户端名称', - description: '客户端说明', - cloneClint: '克隆客户端', - copyAllowedGrantType: '复制客户端授权类型', - copyRedirectUri: '复制客户端重定向Uri', - copyAllowedScope: '复制客户端作用域', - copyClaim: '复制客户端声明', - copyAllowedCorsOrigin: '复制客户端跨域来源', - copyPostLogoutRedirectUri: '复制客户端注销重定向Uri', - copyPropertie: '复制客户端属性', - copyIdentityProviderRestriction: '复制身份提供程序限制', - protocolType: '协议类型', - requireClientSecret: '需要客户端密钥', - requirePkce: '需要Pkce', - allowPlainTextPkce: '允许纯文本Pkce', - allowOfflineAccess: '允许离线访问', - allowedScopes: '允许的作用域', - redirectUris: '重定向Uri', - allowedGrantTypes: '允许的授权类型', - allowAccessTokensViaBrowser: '允许通过浏览器访问令牌', - identityTokenLifetime: '身份令牌有效期(s)', - accessTokenLifetime: '访问令牌有效期(s)', - authorizationCodeLifetime: '授权码有效期(s)', - absoluteRefreshTokenLifetime: '绝对刷新令牌有效期(s)', - slidingRefreshTokenLifetime: '滚动刷新令牌有效期(s)', - deviceCodeLifetime: '设备授权码有效期(s)', - clientClaimsPrefix: '客户端声明前缀', - basicOptions: '基本设置', - frontChannelLogoutUri: '前端通道注销 Uri', - frontChannelLogoutSessionRequired: '需要前端通道注销会话', - backChannelLogoutUri: '后端通道退出 Uri', - backChannelLogoutSessionRequired: '需要后端通道注销会话', - enableLocalLogin: '启用本地登录', - postLogoutRedirectUris: '注销重定向 Uri', - identityProviderRestrictions: '身份提供程序限制', - userSsoLifetime: '用户 SSO 生命周期', - accessTokenType: '访问令牌类型', - refreshTokenUsage: '刷新令牌使用情况', - refreshTokenExpiration: '刷新令牌过期方式', - allowedCorsOrigins: '允许跨域来源', - updateAccessTokenClaimsOnRefresh: '刷新时更新访问令牌声明', - includeJwtId: '包括 Jwt 标识', - alwaysSendClientClaims: '始终发送客户端声明', - alwaysIncludeUserClaimsInIdToken: '始终在标识令牌中包含用户声明', - pairWiseSubjectSalt: '配对主体盐', - requireConsent: '需要同意', - allowRememberConsent: '允许记住同意', - clientUri: '客户端 Uri', - logoUri: '徽标 Uri', - userCodeType: '用户代码类型', - secretType: '密钥类型', - secretValue: '密钥值', - secretHashType: '哈希类型', - hashOnlySharedSecret: '哈希类型仅适用于 SharedSecret 类型', - secretDescription: '密钥说明', - expiration: '过期日期', - claimType: '声明类型', - claimValue: '声明值', - propertyKey: '属性名称', - propertyValue: '属性值', - createApiResource: '添加Api资源', - updateApiResource: '编辑Api资源', - updateApiResourceByName: '编辑Api资源 {name}', - deleteApiResourceByName: '删除Api资源 {name}', - createApiResourceSuccess: 'Api资源 {name} 已添加!', - deleteApiResourceSuccess: 'Api资源 {name} 已删除!', - updateApiResourceSuccess: 'Api资源 {name} 已修改!', - createApiSecret: '添加Api密钥', - deleteApiSecret: '删除Api密钥', - deleteApiSecretByType: '删除Api密钥 {type}', - createApiSecretSuccess: 'Api密钥 {type} 已添加!', - deleteApiSecretSuccess: 'Api密钥 {type} 已删除!', - apiResourceSecret: 'Api 密钥', - createApiScope: '添加Api作用域', - deleteApiScope: '删除Api作用域', - deleteApiScopeByName: '删除Api作用域 {name}', - createApiScopeSuccess: 'Api作用域 {name} 已添加!', - deleteApiScopeSuccess: 'Api作用域 {name} 已删除!', - apiResourceScope: 'Api 作用域', - deleteApiResource: '删除资源', - resourceName: '资源名称', - resourceDisplayName: '显示名称', - enabledResource: '启用资源', - resourceStatus: '资源状态', - resourceDescription: '资源说明', - resourceUserClaims: '用户声明', - apiScopeName: '名称', - apiScopeDisplayName: '显示名称', - apiScopeDescription: '描述', - apiScopeRequired: '必须', - apiScopeEmphasize: '强调', - apiScopeShowInDiscoveryDocument: '在发现文档显示', - createIdentityResource: '添加身份资源', - updateIdentityResource: '编辑身份资源', - identityResourceProperties: '资源属性', - deleteIdentityResource: '删除资源', - updateIdentityResourceByName: '编辑身份资源 {name}', - deleteIdentityResourceByName: '删除身份资源 {name}', - createIdentityResourceSuccess: '身份资源 {name} 已添加!', - deleteIdentityResourceSuccess: '身份资源 {name} 已删除!', - updateIdentityResourceSuccess: '身份资源 {name} 已修改!', - identityResourceRequired: '必须', - identityResourceEmphasize: '强调', - identityResourceShowInDiscoveryDocument: '在发现文档显示', - deleteIdentityPropertyByKey: '是否要删除身份资源属性: {key}', - deleteIdentityPropertySuccess: '身份资源属性: {key} 已删除!', - createIdentityPropertySuccess: '身份资源属性: {key} 已添加!', - createIdentityProperty: '添加身份资源属性' - }, tenant: { createTenant: '创建租户', updateTenant: '编辑租户', @@ -654,5 +512,16 @@ export default { uploadSuccess: '上传成功', folderNameIsRequired: '目录名称不能为空', folderCreateSuccess: '目录 {name} 已创建!' + }, + AbpValidation: { + ThisFieldIsNotAValidEmailAddress: '字段不是有效的邮箱地址', + ThisFieldMustBeAStringWithAMinimumLengthOf: '字段必须是最小长度为{0}的字符串' + }, + AbpIdentity: { + Lock: '锁定', + LockoutEnd: '锁定日期', + LockoutEnabled: '登录尝试失败后锁定帐户', + RoleList: '角色列表', + HasRoles: '已有角色' } } diff --git a/vueJs/src/mixins/EventBusMiXin.ts b/vueJs/src/mixins/EventBusMiXin.ts index 89f5de908..a59ed6a59 100644 --- a/vueJs/src/mixins/EventBusMiXin.ts +++ b/vueJs/src/mixins/EventBusMiXin.ts @@ -44,8 +44,8 @@ export default class EventBusMiXin extends Vue { * @param name 事件名称 * @param callback 注销回调 */ - protected unSubscribe(name: string, callback: (eventData: any) => void | undefined) { - this.$events.off(name, callback) + protected unSubscribe(name: string) { + this.$events.off(name, undefined) } /** diff --git a/vueJs/src/router/modules/identityServer.ts b/vueJs/src/router/modules/identityServer.ts index a8c2cd22b..8fa2887f8 100644 --- a/vueJs/src/router/modules/identityServer.ts +++ b/vueJs/src/router/modules/identityServer.ts @@ -7,7 +7,7 @@ const identityServerRouter: RouteConfig = { meta: { title: 'identityServer', icon: 'identity-server', - roles: ['IdentityServer.Clients', 'IdentityServer.ApiResources', 'IdentityServer.IdentityResources'], + roles: ['AbpIdentityServer.Clients', 'AbpIdentityServer.ApiResources', 'AbpIdentityServer.IdentityResources'], alwaysShow: true }, children: [ @@ -18,7 +18,7 @@ const identityServerRouter: RouteConfig = { meta: { title: 'clients', icon: 'client', - roles: ['IdentityServer.Clients'] + roles: ['AbpIdentityServer.Clients'] } }, { @@ -28,7 +28,7 @@ const identityServerRouter: RouteConfig = { meta: { title: 'apiresources', icon: 'api', - roles: ['IdentityServer.ApiResources'] + roles: ['AbpIdentityServer.ApiResources'] } }, { @@ -38,7 +38,7 @@ const identityServerRouter: RouteConfig = { meta: { title: 'identityresources', icon: 'identity', - roles: ['IdentityServer.IdentityResources'] + roles: ['AbpIdentityServer.IdentityResources'] } } ] diff --git a/vueJs/src/views/admin/claim-type/components/CreateOrUpdateCliamTypeForm.vue b/vueJs/src/views/admin/claim-type/components/CreateOrUpdateCliamTypeForm.vue index 44bc4fb99..94a08c017 100644 --- a/vueJs/src/views/admin/claim-type/components/CreateOrUpdateCliamTypeForm.vue +++ b/vueJs/src/views/admin/claim-type/components/CreateOrUpdateCliamTypeForm.vue @@ -153,11 +153,6 @@ export default class CreateOrUpdateCliamTypeForm extends Vue { return false } - @Watch('claimTypeId') - private onClaimTypeIdChanged() { - this.handleGetClaimType() - } - @Watch('showDialog', { immediate: true }) private onShowDialogChanged() { this.handleGetClaimType() diff --git a/vueJs/src/views/admin/components/RoleReference.vue b/vueJs/src/views/admin/components/RoleReference.vue deleted file mode 100644 index 352574a7e..000000000 --- a/vueJs/src/views/admin/components/RoleReference.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/components/UserReference.vue b/vueJs/src/views/admin/components/UserReference.vue deleted file mode 100644 index 4d4b05902..000000000 --- a/vueJs/src/views/admin/components/UserReference.vue +++ /dev/null @@ -1,176 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/identityServer/api-resources/components/ApiResourceCreateOrEditForm.vue b/vueJs/src/views/admin/identityServer/api-resources/components/ApiResourceCreateOrEditForm.vue index 2a864eaf7..c50597a2b 100644 --- a/vueJs/src/views/admin/identityServer/api-resources/components/ApiResourceCreateOrEditForm.vue +++ b/vueJs/src/views/admin/identityServer/api-resources/components/ApiResourceCreateOrEditForm.vue @@ -15,67 +15,167 @@ ref="formApiResource" label-width="100px" :model="apiResource" - :rules="apiResourceRules" > - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + {{ $t('AbpIdentityServer.Advanced') }} + + + + {{ $t('AbpIdentityServer.Scope') }} + + + {{ $t('AbpIdentityServer.Secret') }} + + + {{ $t('AbpIdentityServer.Propertites') }} + + + + + + + - {{ $t('table.cancel') }} + {{ $t('AbpIdentityServer.Cancel') }} - {{ $t('table.confirm') }} + {{ $t('AbpIdentityServer.Save') }} @@ -84,14 +184,41 @@ - - diff --git a/vueJs/src/views/admin/identityServer/api-resources/index.vue b/vueJs/src/views/admin/identityServer/api-resources/index.vue index 96f73b868..dd29adb51 100644 --- a/vueJs/src/views/admin/identityServer/api-resources/index.vue +++ b/vueJs/src/views/admin/identityServer/api-resources/index.vue @@ -17,15 +17,15 @@ type="primary" @click="refreshPagedData" > - {{ $t('searchList') }} + {{ $t('AbpIdentityServer.Search') }} - {{ $t('identityServer.createApiResource') }} + {{ $t('AbpIdentityServer.Resource:New') }} @@ -40,7 +40,7 @@ @sort-change="handleSortChange" > @@ -176,25 +152,9 @@ - - - - @@ -204,17 +164,13 @@ import { checkPermission } from '@/utils/permission' import DataListMiXin from '@/mixins/DataListMiXin' import Component, { mixins } from 'vue-class-component' import Pagination from '@/components/Pagination/index.vue' -import ApiScopeEditForm from './components/ApiResourceScopeEditForm.vue' -import ApiSecretEditForm from './components/ApiResourceSecretEditForm.vue' import ApiResourceCreateOrEditForm from './components/ApiResourceCreateOrEditForm.vue' -import ApiResourceService, { ApiResource, ApiResourceGetByPaged } from '@/api/apiresources' +import ApiResourceService, { ApiResourceGetByPaged } from '@/api/api-resources' @Component({ name: 'IdentityServerApiResource', components: { Pagination, - ApiScopeEditForm, - ApiSecretEditForm, ApiResourceCreateOrEditForm }, methods: { @@ -237,7 +193,7 @@ import ApiResourceService, { ApiResource, ApiResourceGetByPaged } from '@/api/ap } }) export default class extends mixins(DataListMiXin) { - private editApiResource = new ApiResource() + private editApiResourceId ='' private editApiResourceTitle = '' private showEditApiScopeDialog = false @@ -258,15 +214,13 @@ export default class extends mixins(DataListMiXin) { return ApiResourceService.getApiResources(filter) } - private handleShowEditApiResourceForm(resource: ApiResource) { - if (resource) { - this.editApiResource = resource - this.editApiResourceTitle = this.l('identityServer.updateApiResourceByName', { name: this.editApiResource.name }) - } else { - this.editApiResource = ApiResource.empty() - this.editApiResourceTitle = this.l('identityServer.createApiResource') - } + private handleShowEditApiResourceForm(id: string, name: string) { + this.editApiResourceId = id + this.editApiResourceTitle = this.l('AbpIdentityServer.Resource:New') this.showEditApiResourceDialog = true + if (name) { + this.editApiResourceTitle = this.l('AbpIdentityServer.Resource:Name', { 0: name }) + } } private handleApiResourceEditFormClosed(changed: boolean) { @@ -281,49 +235,26 @@ export default class extends mixins(DataListMiXin) { this.showEditApiSecretDialog = false } - private handleApiScopeEditFormClosed() { + private handleApiScopeEditFormClosed(changed: boolean) { this.showEditApiScopeDialog = false + if (changed) { + this.refreshPagedData() + } } - private handleDeleteApiResource(id: string, name: string) { - this.$confirm(this.l('identityServer.deleteApiResourceByName', { name: name }), - this.l('identityServer.deleteApiResource'), { + private handleDeleteApiResource(id: string) { + this.$confirm(this.l('AbpIdentityServer.Resource:Delete'), + this.l('AbpUi.AreYouSure'), { callback: (action) => { if (action === 'confirm') { ApiResourceService.deleteApiResource(id).then(() => { - this.$message.success(this.l('identityServer.deleteApiResourceSuccess', { name: name })) + this.$message.success(this.l('global.successful')) this.refreshPagedData() }) } } }) } - - private handleCommand(command: {key: string, row: ApiResource}) { - this.editApiResource = command.row - switch (command.key) { - case 'secret' : - this.showEditApiSecretDialog = true - break - case 'scope' : - this.showEditApiScopeDialog = true - break - case 'delete' : - this.handleDeleteApiResource(command.row.id, command.row.name) - break - default: break - } - } - - private formatStatusText(status: boolean) { - let statusText = '' - if (status) { - statusText = this.l('enabled') - } else { - statusText = this.l('disbled') - } - return statusText - } } diff --git a/vueJs/src/views/admin/identityServer/client/components/ClientClaimEditForm.vue b/vueJs/src/views/admin/identityServer/client/components/ClientClaimEditForm.vue index aa305bd46..eeeff38ce 100644 --- a/vueJs/src/views/admin/identityServer/client/components/ClientClaimEditForm.vue +++ b/vueJs/src/views/admin/identityServer/client/components/ClientClaimEditForm.vue @@ -1,85 +1,83 @@ + + diff --git a/vueJs/src/views/admin/identityServer/client/components/ClientEditForm.vue b/vueJs/src/views/admin/identityServer/client/components/ClientEditForm.vue index 7ae01277b..8a6beb6c6 100644 --- a/vueJs/src/views/admin/identityServer/client/components/ClientEditForm.vue +++ b/vueJs/src/views/admin/identityServer/client/components/ClientEditForm.vue @@ -3,22 +3,26 @@ v-el-draggable-dialog width="800px" :visible="showDialog" - :title="$t('identityServer.updateClientByName', {name: client.clientName})" + :title="title" custom-class="modal-form" :show-close="false" + :close-on-click-modal="false" + :close-on-press-escape="false" @close="onFormClosed(false)" > - - + + - + multiple + filterable + allow-create + clearable + style="width: 100%;" + > + + + + + + + - - + multiple + filterable + allow-create + clearable + class="full-select" + > + + - + - - - + - + multiple + filterable + allow-create + clearable + style="width: 100%;" + > + + - + - + + + + + {{ $t('AbpIdentityServer.Advanced') }} + + + + {{ $t('AbpIdentityServer.Secret') }} + + + {{ $t('AbpIdentityServer.Claims') }} + + + {{ $t('AbpIdentityServer.Propertites') }} + + + + + - {{ $t('table.cancel') }} + {{ $t('AbpIdentityServer.Cancel') }} - {{ $t('table.confirm') }} + {{ $t('AbpIdentityServer.Save') }} @@ -529,100 +694,142 @@ - - diff --git a/vueJs/src/views/admin/identityServer/client/components/ClientPropertyEditForm.vue b/vueJs/src/views/admin/identityServer/client/components/ClientPropertyEditForm.vue deleted file mode 100644 index e84835fa5..000000000 --- a/vueJs/src/views/admin/identityServer/client/components/ClientPropertyEditForm.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/identityServer/client/components/ClientSecretEditForm.vue b/vueJs/src/views/admin/identityServer/client/components/ClientSecretEditForm.vue deleted file mode 100644 index 8a32ae580..000000000 --- a/vueJs/src/views/admin/identityServer/client/components/ClientSecretEditForm.vue +++ /dev/null @@ -1,305 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/identityServer/client/index.vue b/vueJs/src/views/admin/identityServer/client/index.vue index a2e3f7708..1a2a82283 100644 --- a/vueJs/src/views/admin/identityServer/client/index.vue +++ b/vueJs/src/views/admin/identityServer/client/index.vue @@ -17,15 +17,15 @@ type="primary" @click="refreshPagedData" > - {{ $t('searchList') }} + {{ $t('AbpIdentityServer.Search') }} - {{ $t('identityServer.createClient') }} + {{ $t('AbpIdentityServer.Client:New') }} @@ -40,7 +40,7 @@ @sort-change="handleSortChange" > + + + + + + @@ -276,29 +261,26 @@ diff --git a/vueJs/src/views/admin/identityServer/components/PropertiesEditForm.vue b/vueJs/src/views/admin/identityServer/components/PropertiesEditForm.vue new file mode 100644 index 000000000..69086d322 --- /dev/null +++ b/vueJs/src/views/admin/identityServer/components/PropertiesEditForm.vue @@ -0,0 +1,169 @@ + + + diff --git a/vueJs/src/views/admin/identityServer/components/ScopeInput.vue b/vueJs/src/views/admin/identityServer/components/ScopeInput.vue deleted file mode 100644 index ad3a1cebb..000000000 --- a/vueJs/src/views/admin/identityServer/components/ScopeInput.vue +++ /dev/null @@ -1,190 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/identityServer/components/SecretEditForm.vue b/vueJs/src/views/admin/identityServer/components/SecretEditForm.vue new file mode 100644 index 000000000..8463a3bf2 --- /dev/null +++ b/vueJs/src/views/admin/identityServer/components/SecretEditForm.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/vueJs/src/views/admin/identityServer/identity-resources/components/IdentityResourceCreateOrEditForm.vue b/vueJs/src/views/admin/identityServer/identity-resources/components/IdentityResourceCreateOrEditForm.vue index 61a20f015..71bce69eb 100644 --- a/vueJs/src/views/admin/identityServer/identity-resources/components/IdentityResourceCreateOrEditForm.vue +++ b/vueJs/src/views/admin/identityServer/identity-resources/components/IdentityResourceCreateOrEditForm.vue @@ -13,93 +13,126 @@
- - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - {{ $t('global.cancel') }} + {{ $t('AbpIdentityServer.Cancel') }} - {{ $t('global.confirm') }} + {{ $t('AbpIdentityServer.Save') }} @@ -108,14 +141,24 @@ - - diff --git a/vueJs/src/views/admin/identityServer/identity-resources/index.vue b/vueJs/src/views/admin/identityServer/identity-resources/index.vue index e48e265e1..938f1fdac 100644 --- a/vueJs/src/views/admin/identityServer/identity-resources/index.vue +++ b/vueJs/src/views/admin/identityServer/identity-resources/index.vue @@ -17,15 +17,15 @@ type="primary" @click="refreshPagedData" > - {{ $t('global.searchList') }} + {{ $t('AbpIdentityServer.Search') }} - {{ $t('identityServer.createIdentityResource') }} + {{ $t('AbpIdentityServer.Resource:New') }}
@@ -40,7 +40,7 @@ @sort-change="handleSortChange" > @@ -168,16 +150,10 @@ /> - - @@ -188,15 +164,14 @@ import { checkPermission } from '@/utils/permission' import DataListMiXin from '@/mixins/DataListMiXin' import Component, { mixins } from 'vue-class-component' import Pagination from '@/components/Pagination/index.vue' -import IdentityPropertyEditForm from './components/IdentityResourcePropertyEditForm.vue' +import IdentityResourceService, { IdentityResource, IdentityResourceGetByPaged } from '@/api/identity-resources' + import IdentityResourceCreateOrEditForm from './components/IdentityResourceCreateOrEditForm.vue' -import IdentityResourceService, { IdentityResource, IdentityResourceGetByPaged } from '@/api/identityresources' @Component({ name: 'IdentityServerIdentityResource', components: { Pagination, - IdentityPropertyEditForm, IdentityResourceCreateOrEditForm }, methods: { @@ -216,10 +191,9 @@ import IdentityResourceService, { IdentityResource, IdentityResourceGetByPaged } } }) export default class extends mixins(DataListMiXin) { - private editIdentityResource = IdentityResource.empty() + private editIdentityResourceId = '' private editIdentityResourceTitle = '' - private showEditIdentityPropertyDialog = false private showEditIdentityResourceDialog = false public dataFilter = new IdentityResourceGetByPaged() @@ -237,31 +211,22 @@ export default class extends mixins(DataListMiXin) { } private handleShowEditIdentityResourceForm(resource: IdentityResource) { - this.editIdentityResource = IdentityResource.empty() if (resource) { - this.editIdentityResource = resource - this.editIdentityResourceTitle = this.l('identityServer.updateIdentityResourceByName', { name: this.editIdentityResource.name }) + this.editIdentityResourceId = resource.id + this.editIdentityResourceTitle = this.l('AbpIdentityServer.Resource:Name', { 0: resource.name }) } else { - this.editIdentityResourceTitle = this.l('identityServer.createIdentityResource') + this.editIdentityResourceTitle = this.l('AbpIdentityServer.Resource:New') } this.showEditIdentityResourceDialog = true } - private handleIdentityResourceEditFormClosed(changed: boolean) { - this.reset(changed) - } - - private handleIdentityPropertyEditFormClosed(changed: boolean) { - this.reset(changed) - } - - private handleDeleteIdentityResource(id: string, name: string) { - this.$confirm(this.l('identityServer.deleteIdentityResourceByName', { name: name }), - this.l('identityServer.deleteIdentityResource'), { + private handleDeleteIdentityResource(resource: IdentityResource) { + this.$confirm(this.l('AbpIdentityServer.Resource:WillDelete', { 0: resource.name }), + this.l('AbpUi.AreYouSure'), { callback: (action) => { if (action === 'confirm') { - IdentityResourceService.deleteIdentityResource(id).then(() => { - this.$message.success(this.l('identityServer.deleteIdentityResourceSuccess', { name: name })) + IdentityResourceService.deleteIdentityResource(resource.id).then(() => { + this.$message.success(this.l('global.successful')) this.refreshPagedData() }) } @@ -269,34 +234,8 @@ export default class extends mixins(DataListMiXin) { }) } - private handleCommand(command: {key: string, row: IdentityResource}) { - switch (command.key) { - case 'property' : - this.editIdentityResource = command.row - this.showEditIdentityPropertyDialog = true - break - case 'delete' : - this.handleDeleteIdentityResource(command.row.id, command.row.name) - break - default: break - } - } - - private formatStatusText(status: boolean) { - let statusText = '' - if (status) { - statusText = this.l('enabled') - } else { - statusText = this.l('disbled') - } - return statusText - } - - private reset(changed: boolean) { - this.editIdentityResourceTitle = '' - this.editIdentityResource = IdentityResource.empty() + private onIdentityResourceEditFormClosed(changed: boolean) { this.showEditIdentityResourceDialog = false - this.showEditIdentityPropertyDialog = false if (changed) { this.refreshPagedData() } diff --git a/vueJs/src/views/admin/roles/components/RoleClaimCreateOrUpdateForm.vue b/vueJs/src/views/admin/roles/components/RoleClaimCreateOrUpdateForm.vue new file mode 100644 index 000000000..f25108f8a --- /dev/null +++ b/vueJs/src/views/admin/roles/components/RoleClaimCreateOrUpdateForm.vue @@ -0,0 +1,292 @@ + + + diff --git a/vueJs/src/views/admin/roles/components/RoleCreateForm.vue b/vueJs/src/views/admin/roles/components/RoleCreateForm.vue new file mode 100644 index 000000000..f19e471d3 --- /dev/null +++ b/vueJs/src/views/admin/roles/components/RoleCreateForm.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/vueJs/src/views/admin/roles/components/RoleEditForm.vue b/vueJs/src/views/admin/roles/components/RoleEditForm.vue index e6cac092d..3949144d6 100644 --- a/vueJs/src/views/admin/roles/components/RoleEditForm.vue +++ b/vueJs/src/views/admin/roles/components/RoleEditForm.vue @@ -1,83 +1,79 @@ diff --git a/vueJs/src/views/admin/users/components/UserClaimCreateOrUpdateForm.vue b/vueJs/src/views/admin/users/components/UserClaimCreateOrUpdateForm.vue index 1b0a807ba..70cbf1cc6 100644 --- a/vueJs/src/views/admin/users/components/UserClaimCreateOrUpdateForm.vue +++ b/vueJs/src/views/admin/users/components/UserClaimCreateOrUpdateForm.vue @@ -3,7 +3,7 @@ v-el-draggable-dialog width="800px" :visible="showDialog" - :title="title" + :title="$t('AbpIdentity.ManageClaim')" custom-class="modal-form" :show-close="false" :close-on-click-modal="true" @@ -139,9 +139,6 @@ export default class UserClaimCreateOrUpdateForm extends Vue { @Prop({ default: '' }) private userId!: string - @Prop({ default: '' }) - private title!: string - @Prop({ default: false }) private showDialog!: boolean @@ -200,11 +197,9 @@ export default class UserClaimCreateOrUpdateForm extends Vue { } } - @Watch('userId') - private onUserIdChanged() { - if (this.userId && this.showDialog) { - this.handleGetUserClaims() - } + @Watch('showDialog', { immediate: true }) + private onShowDialogChanged() { + this.handleGetUserClaims() } mounted() { @@ -227,7 +222,7 @@ export default class UserClaimCreateOrUpdateForm extends Vue { } private handleGetUserClaims() { - if (this.userId) { + if (this.userId && this.showDialog) { UserService.getUserClaims(this.userId).then(res => { this.userClaims = res.items }) diff --git a/vueJs/src/views/admin/users/components/UserCreateForm.vue b/vueJs/src/views/admin/users/components/UserCreateForm.vue deleted file mode 100644 index 3312553e8..000000000 --- a/vueJs/src/views/admin/users/components/UserCreateForm.vue +++ /dev/null @@ -1,204 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/users/components/UserCreateOrUpdateForm.vue b/vueJs/src/views/admin/users/components/UserCreateOrUpdateForm.vue new file mode 100644 index 000000000..836c0abcb --- /dev/null +++ b/vueJs/src/views/admin/users/components/UserCreateOrUpdateForm.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/vueJs/src/views/admin/users/components/UserEditForm.vue b/vueJs/src/views/admin/users/components/UserEditForm.vue deleted file mode 100644 index 270051932..000000000 --- a/vueJs/src/views/admin/users/components/UserEditForm.vue +++ /dev/null @@ -1,373 +0,0 @@ - - - - - diff --git a/vueJs/src/views/admin/users/index.vue b/vueJs/src/views/admin/users/index.vue index b8f254bd2..dfa768fb7 100644 --- a/vueJs/src/views/admin/users/index.vue +++ b/vueJs/src/views/admin/users/index.vue @@ -17,15 +17,15 @@ type="primary" @click="refreshPagedData" > - {{ $t('users.searchList') }} + {{ $t('AbpIdentity.Search') }} - {{ $t('users.createUser') }} + {{ $t('AbpIdentity.NewUser') }} @@ -40,7 +40,7 @@ @sort-change="handleSortChange" > + + + - - - - diff --git a/vueJs/src/views/example/components/Dropdown/Comment.vue b/vueJs/src/views/example/components/Dropdown/Comment.vue deleted file mode 100644 index 9e8c14ee6..000000000 --- a/vueJs/src/views/example/components/Dropdown/Comment.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/vueJs/src/views/example/components/Dropdown/Platform.vue b/vueJs/src/views/example/components/Dropdown/Platform.vue deleted file mode 100644 index d7baf10d3..000000000 --- a/vueJs/src/views/example/components/Dropdown/Platform.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - diff --git a/vueJs/src/views/example/components/Dropdown/SourceUrl.vue b/vueJs/src/views/example/components/Dropdown/SourceUrl.vue deleted file mode 100644 index 7f60ebc7a..000000000 --- a/vueJs/src/views/example/components/Dropdown/SourceUrl.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - diff --git a/vueJs/src/views/example/components/Dropdown/index.ts b/vueJs/src/views/example/components/Dropdown/index.ts deleted file mode 100644 index b3ad9df1d..000000000 --- a/vueJs/src/views/example/components/Dropdown/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as CommentDropdown } from './Comment.vue' -export { default as PlatformDropdown } from './Platform.vue' -export { default as SourceUrlDropdown } from './SourceUrl.vue' diff --git a/vueJs/src/views/example/components/Warning.vue b/vueJs/src/views/example/components/Warning.vue deleted file mode 100644 index bd79ed435..000000000 --- a/vueJs/src/views/example/components/Warning.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/vueJs/src/views/example/create.vue b/vueJs/src/views/example/create.vue deleted file mode 100644 index b8946f92f..000000000 --- a/vueJs/src/views/example/create.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/vueJs/src/views/example/edit.vue b/vueJs/src/views/example/edit.vue deleted file mode 100644 index 36cd9d511..000000000 --- a/vueJs/src/views/example/edit.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/vueJs/src/views/example/list.vue b/vueJs/src/views/example/list.vue deleted file mode 100644 index 68feba2db..000000000 --- a/vueJs/src/views/example/list.vue +++ /dev/null @@ -1,158 +0,0 @@ - - - - -