Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
T
TokenVaultManagement
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jasonwai
TokenVaultManagement
Commits
3e26ff35
Commit
3e26ff35
authored
Jun 19, 2023
by
Jason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 create key UI
parent
fc7198d5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
231 additions
and
344 deletions
+231
-344
KeyController.cs
...n Vault Management/backstage/Controllers/KeyController.cs
+87
-20
ListKeys.cshtml
...oken Vault Management/backstage/Views/Key/ListKeys.cshtml
+144
-324
No files found.
Merchant Token Vault Management/backstage/Controllers/KeyController.cs
View file @
3e26ff35
...
@@ -102,11 +102,32 @@ namespace backstage.Controllers
...
@@ -102,11 +102,32 @@ namespace backstage.Controllers
/// <returns></returns>
/// <returns></returns>
[
Authorize
(
Policy
=
"AdminOnly"
)]
[
Authorize
(
Policy
=
"AdminOnly"
)]
[
HttpPost
]
[
HttpPost
]
public
async
Task
<
ResultModel
>
CreateKey
(
int
keyId
)
public
async
Task
<
ResultModel
>
CreateKey
(
string
key_name
)
{
{
var
result
=
new
ResultModel
();
var
result
=
new
ResultModel
();
string
msg
;
string
msg
;
#
region
key
/
list
if
(
string
.
IsNullOrEmpty
(
key_name
))
{
result
.
IsSuccess
=
false
;
switch
(
_currentLanguage
)
{
case
"en"
:
msg
=
"Key name is empty."
;
break
;
case
"zh"
:
msg
=
"鑰匙名稱不得為空"
;
break
;
default
:
msg
=
"鑰匙名稱不得為空"
;
break
;
}
result
.
Message
=
msg
;
return
result
;
}
// step1 create key
var
url
=
_config
[
"IP"
]
+
"/security/key/generate"
;
var
url
=
_config
[
"IP"
]
+
"/security/key/generate"
;
var
httpMethod
=
HttpMethod
.
Post
;
var
httpMethod
=
HttpMethod
.
Post
;
var
parameters
=
new
Dictionary
<
string
,
string
>
var
parameters
=
new
Dictionary
<
string
,
string
>
...
@@ -121,6 +142,23 @@ namespace backstage.Controllers
...
@@ -121,6 +142,23 @@ namespace backstage.Controllers
{
{
var
Response
=
JsonConvert
.
DeserializeObject
<
Response
>(
apiResult
.
Data
.
ToString
());
var
Response
=
JsonConvert
.
DeserializeObject
<
Response
>(
apiResult
.
Data
.
ToString
());
if
(
Response
.
r
==
0
)
if
(
Response
.
r
==
0
)
{
#
region
step2
combine
key
url
=
_config
[
"IP"
]
+
"/security/key/combine"
;
parameters
=
new
Dictionary
<
string
,
string
>
{
{
"name"
,
key_name
}
};
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
if
(
apiResult
.
IsSuccess
)
{
try
{
Response
=
JsonConvert
.
DeserializeObject
<
Response
>(
apiResult
.
Data
.
ToString
());
if
(
Response
.
r
==
0
)
{
{
switch
(
_currentLanguage
)
switch
(
_currentLanguage
)
...
@@ -157,12 +195,41 @@ namespace backstage.Controllers
...
@@ -157,12 +195,41 @@ namespace backstage.Controllers
}
}
}
}
else
{
result
.
IsSuccess
=
false
;
result
.
IsSuccess
=
false
;
result
.
Message
=
apiResult
.
Message
;
result
.
Message
=
apiResult
.
Message
;
return
result
;
return
result
;
}
#
endregion
#
endregion
}
else
{
result
.
IsSuccess
=
false
;
result
.
Message
=
Response
.
m
.
ToString
();
return
result
;
}
}
catch
(
Exception
e
)
{
result
.
IsSuccess
=
false
;
result
.
Message
=
e
.
Message
+
e
.
InnerException
?.
Message
;
return
result
;
}
}
else
{
result
.
IsSuccess
=
false
;
result
.
Message
=
apiResult
.
Message
;
return
result
;
}
}
}
...
...
Merchant Token Vault Management/backstage/Views/Key/ListKeys.cshtml
View file @
3e26ff35
...
@@ -14,8 +14,14 @@
...
@@ -14,8 +14,14 @@
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
<style>
.btn img {
max-width: 100%;
max-height: 100%;
}
</style>
</style>
}
}
<div class="page-header">
<div class="page-header">
<h3 class="page-title">@Localizer["Keys List"]</h3>
<h3 class="page-title">@Localizer["Keys List"]</h3>
...
@@ -43,7 +49,9 @@
...
@@ -43,7 +49,9 @@
</ul>
</ul>
</div>
</div>
</div>
</div>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" id="CreateKey">@Localizer["Create key"]</a>
<div class="newBlock">
<button type="button" class="btn btn-mainblue-solid float-right disabledClass" data-toggle="modal" data-target="#newApp"><img src="~/images/memberGo/apiKey/newapp-w-300ppi.png">@Localizer["Create key"]</button>
<div class="table-responsive">
<div class="table-responsive">
<!--交易紀錄列表 table-->
<!--交易紀錄列表 table-->
<table class="table table-striped TBL_keysList">
<table class="table table-striped TBL_keysList">
...
@@ -114,276 +122,88 @@
...
@@ -114,276 +122,88 @@
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel">選擇使用者</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<select id="selectUser" class="form-control" asp-items="ViewBag.users">
<!-- 其他用户选项 -->
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button>
</div>
</div>
</div>
</div>
<div class="modal fade " id="deleteProject" role="dialog" tabindex="-1" aria-modal="true">
<div class="modal-dialog modal-md modalforMemberGo">
<!--END of 權限 Popup Form-->
<!--New App Popup Form-->
<!-- Modal -->
<div class="modal fade" id="newApp" role="dialog" tabindex="-1">
<div class="modal-dialog modalforMemberGo">
<!-- Modal content-->
<!-- Modal content-->
<div class="modal-content">
<div class="modal-content">
<div class="modal-header">
<div class="modal-header">
<h4>
@Localizer["Delete key"]
</h4>
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px; padding-bottom: 35px">
<form>
<p>
@Localizer["Confirm"]?
</p>
<div class="SubmitBlock SubmitBlock_sm button-container">
<button id="confirmBtn" class="btn btn-mainblue-solid same-size-button">@Localizer["Submit"]</button>
<button type="button" class="btn btn-mainblue-hollow same-size-button" data-dismiss="modal">@Localizer["Cancel"]</button>
</div>
</form>
</div> <!--END of div "modal-body"-->
<div class="modal-footer">
<!--
<!--
<button type="button" class="btn btn-default" data-dismiss="modal">Close
</button>
<button type="button" class="close" data-dismiss="modal">×
</button>
-->
-->
</div> <!--END of div "modal-footer"-->
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div>
<!--權限 Popup Form-->
<!-- Modal -->
<div class="modal fade" id="permission" role="dialog" tabindex="-1">
<div class="modal-dialog modal-xl modalforMemberGo">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">
<h3 class="modal-title">
<i class="fa fa-tags" aria-hidden="true"></i> 權限管理
<img src="~/images/memberGo/apiKey/newapp-orange-300ppi.png">
@Localizer["Create key"]
</h3>
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div> <!--END of div "modal-header"-->
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px;">
<div class="modal-body" style="padding-top:35px">
<div>
<form class="form-horizontal0">
<div class="newBlock newPerm">
<button type="button" class="btn btn-mainblue-solid" data-toggle="collapse" data-target="#newPermission"><img src="images/memberGo/permission/userRights-4-white-100.png">新增使用者及權限</button>
</div> <!--end fo newBlock-->
<div id="newPermission" class="collapse">
<div class="row">
<div class="col-md-5">
<div class="form-group">
<select title="請選擇使用者" class="selectpicker selecter form-control selectpicker-tokenization">
<option>test A</option>
<option>test B</option>
<option>test C</option>z
<option>test D</option>
</select>
</div>
</div>
<div class="col-md-5">
<div class="form-group">
<div class="form-group">
<select multiple title="請選擇權限(複選)" class="selectpicker selecter form-control selectpicker-tokenization">
<label class="control-label" for="projectid">@Localizer["Name"]:</label>
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<button class="btn btn-primary newPermConfirmBtn">新增</button>
</div>
</div>
</div>
<hr>
</div> <!--end of "newPermission"-->
</div>
<div class="table-responsive permissionTableDiv">
<table class="table table-striped table-hover" id="memberGoTbl_permission">
<tbody>
<tr>
<th style=" border-left: solid 1px #d9d9d9;">編號</th>
<th>使用者</th>
<th>權限</th>
<th>啟動</th>
<th>建立日</th>
<th>修改日</th>
<th style=" border-right: solid 1px #d9d9d9;">操作</th>
</tr>
<tr>
<td>01</td>
<td>test1</td>
<td>
<div>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selecter selectpicker-tokenization">
<input type="text" class="form-control input-sm" id="key_name">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div>
</td>
</div> <!--End of id:-->
<td>
<!--<div class="form-group">
<input type="checkbox" checked>
<label class="control-label" for="projectType">類型:</label>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>02</td>
<td>test2</td>
<td>
<div>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<select id="projectType" class="form-control" onchange="showAppAdv()">
<option>Read</option>
<option value=0>請選擇類型</option>
<option>Write</option>
<option value=1>Android</option>
<option>Update</option>
<option value=2>iOS</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</select>
</div>
</div>
</td>
</div>-->
<td>
<!--End of 類型:-->
<input type="checkbox" checked>
<!-- Andorid Adv-->
</td>
<!--<div id="andoridAdvID" class="andoridAdv">
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<div class="form-group">
<td>
<label class="control-label" for="packageName">套件名稱:</label>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>03</td>
<td>test3</td>
<td>
<div>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<input type="text" class="form-control input-sm" id="packageName" placeholder="例如 com.example">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div>
</td>
</div>
<td>
<div class="form-group">
<input type="checkbox" checked>
<label class="control-label" for="packageName">SHA-1指紋憑證:</label>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>04</td>
<td>test4</td>
<td>
<div>
<div>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<input type="text" class="form-control input-sm" id="fingerPrint" placeholder="例如: AA:BB:CC:DD:EE:00:11:22:33:44:FF:GG:HH:II:JJ:55:66:77:88:99">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div>
</td>
</div>-->
<td>
<!--End of app id:-->
<input type="checkbox" checked>
<!--</div>--> <!-- End of Andorid Adv-->
</td>
<!-- iOS Adv-->
<td>2018-11-09 15:14:43</td>
<!--<div id="iOSAdvID" class="iOSAdv">
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<div class="form-group">
<td>05</td>
<label class="control-label" for="bundleID">繫結識別碼:</label>
<td>test5</td>
<td>
<div>
<div>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<input type="text" class="form-control input-sm" id="bundleID" placeholder="例如 com.example.MyApp">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div>
</td>
</div>-->
<td>
<!--End of app id:-->
<input type="checkbox" checked>
<!-- <div class="description col-sm-12 text-center">
</td>
當您新增一個App後,系統會自動產生一組API金鑰,可至App列表中檢視
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
</tbody>
<!-- <tfoot>
<tr>
<td colspan="7" class="permissionList">
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal">關閉</button>
</td>
</tr>
</tfoot> -->
</table>
</div>
<!-- <div class="text-center">
<button type="button" class="btn btn-default" data-dismiss="modal">關閉</button>
</div> -->
</div> -->
</div><!--END of div "modal-body"-->
<!--</div>--> <!-- End of iOS Adv-->
<div class="modal-footer modalforMemberGo">
<div class="SubmitBlock">
<button id="CreateKey" type="button" class="btn btn-mainblue-solid btnSubmit">新增</button>
<button type="button" class="btn btn-mainblue-hollow btnReset" data-dismiss="modal">取消</button>
</div>
</div>
</form>
</div> <!--END of div "modal-body"-->
<div class="modal-footer modalforMemberGo">
<!--
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-->
</div> <!--END of div "modal-footer"-->
</div><!-- END of Modal content-->
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div><!-- END of div "modal-dialog modal-lg" -->
</div><!-- END of Modal-->
</div><!-- END of Modal-->
<!--END of 權限 Popup Form-->
<!--END of New App Popup Form-->
@section Scripts{
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
...
@@ -444,17 +264,17 @@
...
@@ -444,17 +264,17 @@
//新增鑰匙
//新增鑰匙
$("#CreateKey").on("click", function (e) {
$("#CreateKey").on("click", function (e) {
var keyName = $('#key_name').val();
$.ajax({
$.ajax({
url: "/Key/CreateKey",
url: "/Key/CreateKey",
type: 'POST', // 或 'GET',根據實際需求
type: 'POST', // 或 'GET',根據實際需求
data: { key_name: keyName},
success: function (response) {
success: function (response) {
// API 呼叫成功的處理程式碼
// API 呼叫成功的處理程式碼
showAlert(response.isSuccess, response.message)
showAlert(response.isSuccess, response.message)
if (response.isSuccess) {
if (response.isSuccess) {
$('#newApp').modal('hide');
setTimeout(function () {
setTimeout(function () {
location.reload();
location.reload();
}, 2000);
}, 2000);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment