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
Hide 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,16 +102,37 @@ namespace backstage.Controllers
/// <returns></returns>
[
Authorize
(
Policy
=
"AdminOnly"
)]
[
HttpPost
]
public
async
Task
<
ResultModel
>
CreateKey
(
int
keyId
)
public
async
Task
<
ResultModel
>
CreateKey
(
string
key_name
)
{
var
result
=
new
ResultModel
();
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
httpMethod
=
HttpMethod
.
Post
;
var
parameters
=
new
Dictionary
<
string
,
string
>
{
};
var
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
...
...
@@ -123,23 +144,66 @@ namespace backstage.Controllers
if
(
Response
.
r
==
0
)
{
switch
(
_currentLanguage
)
#
region
step2
combine
key
url
=
_config
[
"IP"
]
+
"/security/key/combine"
;
parameters
=
new
Dictionary
<
string
,
string
>
{
{
"name"
,
key_name
}
};
case
"en"
:
msg
=
"Create key success."
;
break
;
case
"zh"
:
msg
=
"新增鑰匙成功"
;
break
;
default
:
msg
=
"新增鑰匙成功"
;
break
;
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
if
(
apiResult
.
IsSuccess
)
{
try
{
Response
=
JsonConvert
.
DeserializeObject
<
Response
>(
apiResult
.
Data
.
ToString
());
if
(
Response
.
r
==
0
)
{
switch
(
_currentLanguage
)
{
case
"en"
:
msg
=
"Create key success."
;
break
;
case
"zh"
:
msg
=
"新增鑰匙成功"
;
break
;
default
:
msg
=
"新增鑰匙成功"
;
break
;
}
result
.
IsSuccess
=
true
;
result
.
Message
=
msg
;
return
result
;
}
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
;
}
}
result
.
IsSuccess
=
true
;
result
.
Message
=
msg
;
return
result
;
else
{
result
.
IsSuccess
=
false
;
result
.
Message
=
apiResult
.
Message
;
return
result
;
}
#
endregion
}
else
{
...
...
@@ -157,10 +221,13 @@ namespace backstage.Controllers
}
}
result
.
IsSuccess
=
false
;
result
.
Message
=
apiResult
.
Message
;
return
result
;
#
endregion
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 @@
<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>
<style>
.btn img {
max-width: 100%;
max-height: 100%;
}
</style>
}
<div class="page-header">
<h3 class="page-title">@Localizer["Keys List"]</h3>
...
...
@@ -43,351 +49,165 @@
</ul>
</div>
</div>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" id="CreateKey">@Localizer["Create key"]</a>
<div class="table-responsive">
<!--交易紀錄列表 table-->
<table class="table table-striped TBL_keysList">
<thead>
<tr>
<th style=" border-left: solid 0.1px #d9d9d9;">@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Encryption"]</th>
<th>@Localizer["Last Update"]</th>
<th>@Localizer["Status"]</th>
<th>@Localizer["Expiration"]</th>
<th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr>
</thead>
<tbody>
@if (Model != null)
@if (Model.Count > 0)
{
foreach (var k in Model)
{
<tr>
<td>@k.id</td>
<td><a asp-action="" title="Enter Application Management">@k.name</a></td>
<td>@k.encryption</td>
<td>@k.lastUpdate</td>
<td>@(k.active==1?"In use":"")</td>
<td>@k.expiration</td>
<td>
<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>
<a data-toggle="modal" data-target="#editProject" title="Modify">
<div class="table-responsive">
<!--交易紀錄列表 table-->
<table class="table table-striped TBL_keysList">
<thead>
<tr>
<th style=" border-left: solid 0.1px #d9d9d9;">@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Encryption"]</th>
<th>@Localizer["Last Update"]</th>
<th>@Localizer["Status"]</th>
<th>@Localizer["Expiration"]</th>
<th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr>
</thead>
<a class="reviseKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#editProject" title="Revise"
>
<tbody
>
<i class="fa-solid fa-pen-to-square"></i>
@if (Model != null)
@if (Model.Count > 0)
{
foreach (var k in Model)
{
<tr>
<td>@k.id</td>
<td><a asp-action="" title="Enter Application Management">@k.name</a></td>
<td>@k.encryption</td>
<td>@k.lastUpdate</td>
<td>@(k.active==1?"In use":"")</td>
<td>@k.expiration</td>
<td>
<a data-toggle="modal" data-target="#editProject" title="Modify">
<a class="reviseKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#editProject" title="Revise">
<i class="fa-solid fa-pen-to-square"></i>
</a>
</a>
</a>
</td>
<td>
</td>
<td>
<a data-toggle="modal" data-target="#deleteProject" title="Delete">
<a data-toggle="modal" data-target="#deleteProject" title="Delete">
<a class="deleteKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#deleteProject" title="Delete">
<a class="deleteKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#deleteProject" title="Delete">
<i class="fa-solid fa-trash-can"></i>
<i class="fa-solid fa-trash-can"></i>
</a>
</a>
</a>
</td>
</tr>
</td>
</tr>
}
}
}
</tbody>
</table>
<!--End of APIKey管理 table-->
</tbody>
</table>
<!--End of APIKey管理 table-->
</div>
</div>
</div>
</div>
</div>
</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">
<!-- Modal content-->
<div class="modal-content">
<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>
-->
</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">
<i class="fa fa-tags" aria-hidden="true"></i> 權限管理
</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 class="modal-body" style="padding-top:35px;">
<div>
<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>
<!--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-->
<div class="modal-content">
<div class="modal-header">
<!--
<button type="button" class="close" data-dismiss="modal">×</button>
-->
<h3 class="modal-title">
<img src="~/images/memberGo/apiKey/newapp-orange-300ppi.png">
@Localizer["Create key"]
</h3>
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px">
<form class="form-horizontal0">
<div class="form-group">
<label class="control-label" for="projectid">@Localizer["Name"]:</label>
<div>
<input type="text" class="form-control input-sm" id="key_name">
</div>
<div class="col-md-5">
<div class="form-group">
<select multiple title="請選擇權限(複選)" class="selectpicker selecter form-control selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</div> <!--End of id:-->
<!--<div class="form-group">
<label class="control-label" for="projectType">類型:</label>
<div>
<select id="projectType" class="form-control" onchange="showAppAdv()">
<option value=0>請選擇類型</option>
<option value=1>Android</option>
<option value=2>iOS</option>
</select>
</div>
<div class="col-md-2">
<div class="form-group">
<button class="btn btn-primary newPermConfirmBtn">新增</button>
</div>-->
<!--End of 類型:-->
<!-- Andorid Adv-->
<!--<div id="andoridAdvID" class="andoridAdv">
<div class="form-group">
<label class="control-label" for="packageName">套件名稱:</label>
<div>
<input type="text" class="form-control input-sm" id="packageName" placeholder="例如 com.example">
</div>
</div>
<div class="form-group">
<label class="control-label" for="packageName">SHA-1指紋憑證:</label>
<div>
<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">
</div>
</div>-->
<!--End of app id:-->
<!--</div>--> <!-- End of Andorid Adv-->
<!-- iOS Adv-->
<!--<div id="iOSAdvID" class="iOSAdv">
<div class="form-group">
<label class="control-label" for="bundleID">繫結識別碼:</label>
<div>
<input type="text" class="form-control input-sm" id="bundleID" placeholder="例如 com.example.MyApp">
</div>
</div>-->
<!--End of app id:-->
<!-- <div class="description col-sm-12 text-center">
當您新增一個App後,系統會自動產生一組API金鑰,可至App列表中檢視
</div> -->
<!--</div>--> <!-- End of iOS Adv-->
<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>
<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>
<select multiple title="請選擇權限(複選)" class="selectpicker selecter selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</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>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</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>03</td>
<td>test3</td>
<td>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</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>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</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>05</td>
<td>test5</td>
<td>
<div>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable & Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</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>
</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><!--END of div "modal-body"-->
<div class="modal-footer modalforMemberGo">
</div>
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div><!-- END of Modal-->
<!--END of 權限 Popup Form-->
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
</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 div "modal-dialog modal-lg" -->
</div><!-- END of Modal-->
<!--END of New App Popup Form-->
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
...
...
@@ -444,17 +264,17 @@
//新增鑰匙
$("#CreateKey").on("click", function (e) {
$.ajax({
var keyName = $('#key_name').val();
$.ajax({
url: "/Key/CreateKey",
type: 'POST', // 或 'GET',根據實際需求
data: { key_name: keyName},
success: function (response) {
// API 呼叫成功的處理程式碼
showAlert(response.isSuccess, response.message)
if (response.isSuccess) {
$('#newApp').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
...
...
@@ -473,5 +293,5 @@
})
</script>
}
\ No newline at end of file
</script>
}
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