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
095fd6e0
Commit
095fd6e0
authored
Jun 08, 2023
by
Jason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
edit mask尚未完成
parent
94a484f6
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
414 additions
and
103 deletions
+414
-103
TokenVaultController .cs
...Management/backstage/Controllers/TokenVaultController .cs
+277
-43
Index.cshtml
... Token Vault Management/backstage/Views/Home/Index.cshtml
+1
-1
CreateField.cshtml
... Management/backstage/Views/TokenVault/CreateField.cshtml
+1
-1
CreateTokenVault.cshtml
...gement/backstage/Views/TokenVault/CreateTokenVault.cshtml
+1
-1
Edit.cshtml
...n Vault Management/backstage/Views/TokenVault/Edit.cshtml
+1
-1
List.cshtml
...n Vault Management/backstage/Views/TokenVault/List.cshtml
+1
-1
ListFields.cshtml
...t Management/backstage/Views/TokenVault/ListFields.cshtml
+1
-1
ListMasks.cshtml
...lt Management/backstage/Views/TokenVault/ListMasks.cshtml
+113
-47
ListUsers.cshtml
...lt Management/backstage/Views/TokenVault/ListUsers.cshtml
+1
-1
CreateDepartment.cshtml
...t Management/backstage/Views/User/CreateDepartment.cshtml
+1
-1
CreateUser.cshtml
...n Vault Management/backstage/Views/User/CreateUser.cshtml
+1
-1
GetDepartment.cshtml
...ault Management/backstage/Views/User/GetDepartment.cshtml
+1
-1
GetUser.cshtml
...oken Vault Management/backstage/Views/User/GetUser.cshtml
+1
-1
ListDepartments.cshtml
...lt Management/backstage/Views/User/ListDepartments.cshtml
+1
-1
ListUsers.cshtml
...en Vault Management/backstage/Views/User/ListUsers.cshtml
+1
-1
style.css
...nt Token Vault Management/backstage/wwwroot/css/style.css
+11
-0
No files found.
Merchant Token Vault Management/backstage/Controllers/TokenVaultController .cs
View file @
095fd6e0
...
@@ -530,6 +530,7 @@ namespace backstage.Controllers
...
@@ -530,6 +530,7 @@ namespace backstage.Controllers
{
"field_id"
,
field_id
},
{
"field_id"
,
field_id
},
};
};
#
region
list
mask
var
url
=
_config
[
"IP"
]
+
"/v2/vault/get"
;
var
url
=
_config
[
"IP"
]
+
"/v2/vault/get"
;
var
httpMethod
=
HttpMethod
.
Post
;
var
httpMethod
=
HttpMethod
.
Post
;
// 取得使用者的 "token" Claim 值
// 取得使用者的 "token" Claim 值
...
@@ -585,6 +586,7 @@ namespace backstage.Controllers
...
@@ -585,6 +586,7 @@ namespace backstage.Controllers
}
}
}
}
#
endregion
return
RedirectToAction
(
"ListFields"
,
queryString
);
return
RedirectToAction
(
"ListFields"
,
queryString
);
}
}
...
@@ -693,27 +695,24 @@ namespace backstage.Controllers
...
@@ -693,27 +695,24 @@ namespace backstage.Controllers
}
}
//新增MASK
//新增MASK
ajax
[
HttpPost
]
[
HttpPost
]
public
async
Task
<
IActionResult
>
CreateMask
(
Mask
mask
,
int
merchant_id
,
int
vault_id
,
int
field_id
)
public
async
Task
<
ResultModel
>
CreateMask
(
IFormCollection
form
)
{
{
// 構建包含參數的查詢字串
var
result
=
new
ResultModel
();
var
queryString
=
new
RouteValueDictionary
{
{
"Merchant_id"
,
merchant_id
},
{
"vault_id"
,
vault_id
},
{
"field_id"
,
field_id
}
};
try
try
{
{
var
url
=
_config
[
"IP"
]
+
"/v2/vault"
;
var
url
=
_config
[
"IP"
]
+
"/v2/vault"
;
if
(
string
.
IsNullOrEmpty
(
mask
.
name
))
if
(
string
.
IsNullOrEmpty
(
form
[
"name"
]
))
{
{
TempData
[
"IsSuccess"
]
=
false
;
result
.
IsSuccess
=
false
;
TempData
[
"msg"
]
=
"名稱不能為空"
;
result
.
Message
=
"名稱不能為空"
;
return
RedirectToAction
(
"ListFields"
,
queryString
)
;
return
result
;
}
}
...
@@ -722,32 +721,130 @@ namespace backstage.Controllers
...
@@ -722,32 +721,130 @@ namespace backstage.Controllers
string
token
=
User
.
FindFirstValue
(
"token"
);
string
token
=
User
.
FindFirstValue
(
"token"
);
var
setting
=
new
var
setting
=
new
{
{
mask
=
mask
.
mask
,
mask
=
Convert
.
ToInt32
(
form
[
"mask"
])
,
size_init
=
mask
.
size_init
,
size_init
=
Convert
.
ToInt32
(
form
[
"size_init"
])
,
size_end
=
mask
.
size_end
size_end
=
Convert
.
ToInt32
(
form
[
"size_end"
])
};
};
var
fieldData
=
new
[]
var
fieldData
=
new
[]
{
{
new
new
{
action
=
"ADD"
,
field_id
=
Convert
.
ToInt32
(
form
[
"field_id"
]),
name
=
form
[
"name"
].
ToString
(),
type
=
Convert
.
ToInt32
(
form
[
"type"
]),
setting
=
System
.
Text
.
Json
.
JsonSerializer
.
Serialize
(
setting
)
}
};
string
namstext
=
form
[
"name"
];
var
parameters
=
new
Dictionary
<
string
,
string
>
{
{
"Merchant_id"
,
form
[
"merchant_id"
]
},
{
"info"
,
"MASKS"
},
{
"id"
,
form
[
"vault_id"
]},
{
"data"
,
JsonConvert
.
SerializeObject
(
fieldData
)}
};
var
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
if
(
apiResult
.
IsSuccess
)
{
var
Response
=
JsonConvert
.
DeserializeObject
<
Response
>(
apiResult
.
Data
.
ToString
());
if
(
Response
.
r
==
0
)
{
{
action
=
"ADD"
,
if
(
Response
.
failInfo
==
null
)
field_id
,
{
mask
.
name
,
result
.
IsSuccess
=
true
;
type
=
mask
.
type
,
result
.
Message
=
"Create success"
;
setting
=
setting
return
result
;
}
result
.
IsSuccess
=
false
;
result
.
Message
=
System
.
Text
.
RegularExpressions
.
Regex
.
Unescape
(
string
.
Join
(
", "
,
Response
.
failInfo
));
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
=
false
;
result
.
Message
=
"Create fail."
;
return
result
;
//return View();
}
//刪除MASK ajx
[
HttpPost
]
public
async
Task
<
ResultModel
>
DeleteMask
(
IFormCollection
form
)
{
var
result
=
new
ResultModel
();
try
{
var
url
=
_config
[
"IP"
]
+
"/v2/vault"
;
if
(
string
.
IsNullOrEmpty
(
form
[
"name"
]))
{
result
.
IsSuccess
=
false
;
result
.
Message
=
"名稱不能為空"
;
return
result
;
}
var
httpMethod
=
HttpMethod
.
Post
;
// 取得使用者的 "token" Claim 值
string
token
=
User
.
FindFirstValue
(
"token"
);
var
setting
=
new
{
mask
=
Convert
.
ToInt32
(
form
[
"mask"
]),
size_init
=
Convert
.
ToInt32
(
form
[
"size_init"
]),
size_end
=
Convert
.
ToInt32
(
form
[
"size_end"
])
};
};
var
fieldData
=
new
[]
{
new
{
action
=
"MOD"
,
id
=
Convert
.
ToInt32
(
form
[
"mask_id"
]),
name
=
form
[
"name"
].
ToString
(),
type
=
Convert
.
ToInt32
(
form
[
"type"
]),
setting
=
System
.
Text
.
Json
.
JsonSerializer
.
Serialize
(
setting
)
}
};
string
namstext
=
form
[
"name"
];
var
parameters
=
new
Dictionary
<
string
,
string
>
var
parameters
=
new
Dictionary
<
string
,
string
>
{
{
{
"Merchant_id"
,
merchant_id
.
ToString
()
},
{
"Merchant_id"
,
form
[
"merchant_id"
]
},
{
"info"
,
"MASKS"
},
{
"info"
,
"MASKS"
},
{
"id"
,
vault_id
.
ToString
()
},
{
"id"
,
form
[
"vault_id"
]
},
{
"data"
,
JsonConvert
.
SerializeObject
(
fieldData
)}
{
"data"
,
JsonConvert
.
SerializeObject
(
fieldData
)}
};
};
var
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
var
apiResult
=
await
_callApi
.
CallAPI
(
url
,
parameters
,
httpMethod
);
if
(
apiResult
.
IsSuccess
)
if
(
apiResult
.
IsSuccess
)
{
{
...
@@ -756,24 +853,23 @@ namespace backstage.Controllers
...
@@ -756,24 +853,23 @@ namespace backstage.Controllers
{
{
if
(
Response
.
failInfo
==
null
)
if
(
Response
.
failInfo
==
null
)
{
{
result
.
IsSuccess
=
true
;
TempData
[
"IsSuccess"
]
=
true
;
result
.
Message
=
"Create success"
;
TempData
[
"msg"
]
=
"Create success"
;
return
result
;
return
RedirectToAction
(
"ListMasks"
,
queryString
);
}
}
TempData
[
"IsSuccess"
]
=
false
;
result
.
IsSuccess
=
false
;
TempData
[
"msg"
]
=
System
.
Text
.
RegularExpressions
.
Regex
.
Unescape
(
string
.
Join
(
", "
,
Response
.
failInfo
));
result
.
Message
=
System
.
Text
.
RegularExpressions
.
Regex
.
Unescape
(
string
.
Join
(
", "
,
Response
.
failInfo
));
return
RedirectToAction
(
"ListMasks"
,
queryString
)
;
return
result
;
}
}
else
else
{
{
TempData
[
"IsSuccess"
]
=
false
;
result
.
IsSuccess
=
false
;
TempData
[
"msg"
]
=
apiResult
.
Message
;
result
.
Message
=
Response
.
m
.
ToString
()
;
return
RedirectToAction
(
"ListMasks"
,
queryString
)
;
return
result
;
}
}
...
@@ -783,15 +879,153 @@ namespace backstage.Controllers
...
@@ -783,15 +879,153 @@ namespace backstage.Controllers
catch
(
Exception
e
)
catch
(
Exception
e
)
{
{
TempData
[
"IsSuccess"
]
=
false
;
result
.
IsSuccess
=
false
;
TempData
[
"msg"
]
=
e
.
Message
+
e
.
InnerException
?.
Message
;
result
.
Message
=
e
.
Message
+
e
.
InnerException
?.
Message
;
return
RedirectToAction
(
"ListMasks"
,
queryString
)
;
return
result
;
}
}
TempData
[
"IsSuccess"
]
=
false
;
result
.
IsSuccess
=
false
;
TempData
[
"msg"
]
=
"Create fail."
;
result
.
Message
=
"Create fail."
;
return
RedirectToAction
(
"ListMasks"
,
queryString
);
return
result
;
}
//編輯MASK ajax
[
HttpPost
]
public
async
Task
<
ResultModel
>
EditMask
(
IFormCollection
form
)
{
var
result
=
new
ResultModel
();
// var field_id = Convert.ToInt32(form["field_id"]);
// #region list mask
// var url = _config["IP"] + "/v2/vault/get";
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
//var parameters = new Dictionary<string, string>
// {
// { "Merchant_id", form["Merchant_id"].ToString() },
// { "id", form["vault_id"].ToString() },
// { "info", "MASKS" }
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
// if (FieldsResponse.r == 0)
// {
// if (FieldsResponse.fields.Count > 0)
// {
// var existField = FieldsResponse.fields.Where(f => f.id == field_id).FirstOrDefault();
// if (existField != null)
// {
// ViewBag.FieldName = existField.name;
// return View(existField.masks);
// }
// }
// }
// }
// #endregion
// try
// {
// var url = _config["IP"] + "/v2/vault";
// if (string.IsNullOrEmpty(form["name"]))
// {
// result.IsSuccess = false;
// result.Message = "名稱不能為空";
// return result;
// }
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
// var setting = new
// {
// mask = Convert.ToInt32(form["mask"]),
// size_init = Convert.ToInt32(form["size_init"]),
// size_end = Convert.ToInt32(form["size_end"])
// };
// var fieldData = new[]
// {
// new
// {
// action = "ADD",
// field_id=Convert.ToInt32(form["field_id"]),
// name=form["name"].ToString(),
// type = Convert.ToInt32(form["type"]),
// setting = System.Text.Json.JsonSerializer.Serialize(setting)
// }
// };
// string namstext = form["name"];
// var parameters = new Dictionary<string, string>
// {
// { "Merchant_id",form["merchant_id"] },
// { "info","MASKS"},
// { "id", form["vault_id"]},
// { "data",JsonConvert.SerializeObject(fieldData)}
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
// if (Response.r == 0)
// {
// if (Response.failInfo == null)
// {
// result.IsSuccess = true;
// result.Message = "Create success";
// return result;
// }
// result.IsSuccess = false;
// result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
// 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 = false;
// result.Message = "Create fail.";
return
result
;
}
}
...
...
Merchant Token Vault Management/backstage/Views/Home/Index.cshtml
View file @
095fd6e0
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
@*<div class="row">
@*<div class="row">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/CreateField.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/CreateTokenVault.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/Edit.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/List.cshtml
View file @
095fd6e0
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/ListFields.cshtml
View file @
095fd6e0
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/ListMasks.cshtml
View file @
095fd6e0
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
...
@@ -86,17 +86,17 @@
...
@@ -86,17 +86,17 @@
<tr>
<tr>
<td class="item">@m.id</td>
<td class="item">@m.id</td>
<td class="mask_name">
mask_
name</td>
<td class="mask_name">
@m.
name</td>
<td class="content">@m.type</td>
<td class="content">@m.type</td>
<td class="item">@(m.is_unique==1?"是":"否")</td>
<td class="item">@(m.is_unique==1?"是":"否")</td>
<td class="content">@m.setting</td>
<td class="content">@m.setting</td>
<td>
<td>
<a data-toggle="modal" data-target="#edit-field-mask" title="修改">
<a
class="editMaskBtn"
data-toggle="modal" data-target="#edit-field-mask" title="修改">
<i class="fa-solid fa-pen-to-square"></i>
<i class="fa-solid fa-pen-to-square"></i>
</a>
</a>
</td>
</td>
<td>
<td>
<a data-toggle="modal" data-target="#delete-field-mask" title="刪除">
<a
class="delMaskBtn"
data-toggle="modal" data-target="#delete-field-mask" title="刪除">
<i class="fa-solid fa-trash-can"></i>
<i class="fa-solid fa-trash-can"></i>
</a>
</a>
</td>
</td>
...
@@ -137,26 +137,32 @@
...
@@ -137,26 +137,32 @@
</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">
<form id="createMaskForm" class="form-horizontal0" method="post"
autocomplete="off"
>
<form id="createMaskForm" class="form-horizontal0" method="post"
autocomplete="off"
>
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<input hidden name="mask_id" >
<input hidden name="merchant_id" value="@ViewBag.merchant_id">
<input hidden name="field_id" value="@ViewBag.field_id">
<input hidden name="vault_id" value="@ViewBag.vault_id">
</div>
<div class="form-group">
<div class="form-group">
<label class="control-labe" for="name">名稱:</label>
<label class="control-labe
required
" for="name">名稱:</label>
<div class="">
<div class="">
<input type="text" name="name" class="form-control form-control-sm0">
<input type="text" name="name" class="form-control form-control-sm0"
required
>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label class="control-labe" for="">是否為唯一值:</label>
<label class="control-labe" for="">是否為唯一值:</label>
<div class="form-check form-check-inline">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="
option
1" checked>
<input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="1" checked>
<label class="form-check-label" for="uniqueY">
<label class="form-check-label" for="uniqueY">
是
是
</label>
</label>
</div>
</div>
<div class="form-check form-check-inline">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="
option2
">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="
0
">
<label class="form-check-label" for="uniqueN">
<label class="form-check-label" for="uniqueN">
否
否
</label>
</label>
...
@@ -167,7 +173,7 @@
...
@@ -167,7 +173,7 @@
<label class="control-labe" for="userName">種類:</label>
<label class="control-labe" for="userName">種類:</label>
<div class="form-group">
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<select title="請選遮罩種類(單選)"
name="type"
id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()">
<select title="請選遮罩種類(單選)" id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()">
<option class="bs-title-option" value=""></option>
<option class="bs-title-option" value=""></option>
<option value="0">0</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="1">1</option>
...
@@ -185,7 +191,7 @@
...
@@ -185,7 +191,7 @@
<label class="control-labe" for="userName">mask:</label>
<label class="control-labe" for="userName">mask:</label>
<div class="form-group">
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<select
title="請選擇mask(單選)" name="mask
" class="selectpicker selecter form-control selectpicker-tokenization">
<select
id="mask" title="請選擇mask(單選)
" class="selectpicker selecter form-control selectpicker-tokenization">
<option class="bs-title-option" value=""></option>
<option class="bs-title-option" value=""></option>
<option>0</option>
<option>0</option>
<option>1</option>
<option>1</option>
...
@@ -196,21 +202,21 @@
...
@@ -196,21 +202,21 @@
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label class="control-labe" for="userName">size init:</label>
<label class="control-labe
required
" for="userName">size init:</label>
<div class="">
<div class="">
<input type="number" name="size_init" class="form-control form-control-sm0">
<input type="number" name="size_init" class="form-control form-control-sm0"
required
>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label class="control-labe" for="userName">size end:</label>
<label class="control-labe
required
" for="userName">size end:</label>
<div class="">
<div class="">
<input type="number" name="size_end" class="form-control form-control-sm0">
<input type="number" name="size_end" class="form-control form-control-sm0"
required
>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
<label class="control-labe" for="userName">to skip:</label>
<label class="control-labe
required
" for="userName">to skip:</label>
<div class="">
<div class="">
<input type="text" name="toskip" class="form-control form-control-sm0">
<input type="text" name="toskip" class="form-control form-control-sm0"
required
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -233,8 +239,6 @@
...
@@ -233,8 +239,6 @@
</div>
</div>
<!-- END of Modal-->
<!-- END of Modal-->
<!--END of 新增遮罩 Popup Form-->
<!--END of 新增遮罩 Popup Form-->
<!--刪除遮罩 Form-->
<!--刪除遮罩 Form-->
<!-- Modal -->
<!-- Modal -->
...
@@ -258,7 +262,7 @@
...
@@ -258,7 +262,7 @@
</p>
</p>
<div class="SubmitBlock SubmitBlock_sm">
<div class="SubmitBlock SubmitBlock_sm">
<button type="
submit
" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button>
<button type="
button" id="delMaskConfirmBtn
" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">取消</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">取消</button>
</div>
</div>
...
@@ -284,47 +288,109 @@
...
@@ -284,47 +288,109 @@
$('document').ready(function () {
$('document').ready(function () {
var msg = '@TempData["msg"]';
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
if (msg != '') {
showAlert(IsSuccess, msg);
showAlert(IsSuccess, msg);
}
}
//新增mask
$("#createMaskBtn").click(function (event) {
$("#createMaskBtn").click(function (event) {
/* event.preventDefault();*/
$('#new-field-mask .modal-title').text('新增遮罩');
console.log('createMaskForm');
$.ajax({
var formData = {
url: '/TokenVault/CreateMask',
mask: {
type: 'POST',
name: $('input[name="name"]').val(),
data: $('#createMaskForm').serialize(),
type: $('input[name="type"]').val(),
success: function (data) {
is_unique: $('input[name="is_unique"]').val(),
//console.log(data);
size_init: $('input[name="size_init"]').val(),
size_end: $('input[name="size_end"]').val(),
showAlert(data.isSuccess, data.message);
mask: $('input[name="mask"]').val(),
if (data.isSuccess) {
toskip: $('input[name="toskip"]').val(),
$('#new-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
},
},
merchant_id : parseInt('@ViewBag.Merchant_id'),
error: function (xhr, status, error) {
vault_id : parseInt('@ViewBag.vault_id'),
console.log(xhr.responseText);
field_id : parseInt('@ViewBag.field_id')
showAlert(false, "發生錯誤");
}
});
})
//編輯mask
$(".editMaskBtn").click(function (event) {
var selectMaskId = 0;
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
$('input[name="mask_id"]').val(selectMaskId);
$('#new-field-mask .modal-title').text('編輯遮罩');
$('new-field-mask').modal();
//$.ajax({
// url: '/TokenVault/EditMask',
// type: 'POST',
// data: $('#createMaskForm').serialize(),
// success: function (data) {
// //console.log(data);
// showAlert(data.isSuccess, data.message);
// if (data.isSuccess) {
// $('#new-field-mask').modal('hide');
// setTimeout(function () {
// location.reload();
// }, 2000);
// }
// },
// error: function (xhr, status, error) {
// console.log(xhr.responseText);
// showAlert(false, "發生錯誤");
// }
//});
})
//刪除mask
var selectMaskId = 0;
$('.delMaskBtn').click(function () {
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
})
$('#delMaskConfirmBtn').click(function () {
var data = {
merchant_id:'@ViewBag.merchant_id',
vault_id:'@ViewBag.vault_id',
mask_id: selectMaskId
};
};
console.log('formData=' + JSON.stringify(formData));
// 提交表單
$.ajax({
$.ajax({
url: '/TokenVault/
Crea
teMask',
url: '/TokenVault/
Dele
teMask',
type: 'POST',
type: 'POST',
data: JSON.stringify(formData),
data: data,
contentType: "application/json; charset=utf-8",
success: function (data) {
dataType: "json",
//console.log(data);
success: function (response) {
// 處理成功回應
showAlert(data.isSuccess, data.message);
if (data.isSuccess) {
$('#delete-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
},
},
error: function (error) {
error: function (xhr, status, error) {
// 處理錯誤回應
console.log(xhr.responseText);
showAlert(false, "發生錯誤");
}
}
});
});
});
})
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/ListUsers.cshtml
View file @
095fd6e0
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
...
...
Merchant Token Vault Management/backstage/Views/User/CreateDepartment.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/User/CreateUser.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/User/GetDepartment.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/User/GetUser.cshtml
View file @
095fd6e0
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="col-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/User/ListDepartments.cshtml
View file @
095fd6e0
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="col-lg-12 grid-margin stretch-card">
...
...
Merchant Token Vault Management/backstage/Views/User/ListUsers.cshtml
View file @
095fd6e0
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
{
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
}
<div
id="msgDiv"></div>
<div class="floating-msg"
id="msgDiv"></div>
</div>
</div>
<div class="row">
<div class="row">
...
...
Merchant Token Vault Management/backstage/wwwroot/css/style.css
View file @
095fd6e0
...
@@ -19272,4 +19272,15 @@ tbody {
...
@@ -19272,4 +19272,15 @@ tbody {
.departmentRow
,
.userRow
{
.departmentRow
,
.userRow
{
cursor
:
pointer
;
cursor
:
pointer
;
}
.floating-msg
{
position
:
fixed
;
top
:
80px
;
right
:
20px
;
z-index
:
9999
;
background-color
:
transparent
;
padding
:
10px
;
border
:
0
;
}
}
\ No newline at end of file
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