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
caf7a545
Commit
caf7a545
authored
May 30, 2023
by
Jason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
正在寫部門加入使用者
parent
ee729155
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
2079 additions
and
271 deletions
+2079
-271
TokenVaultController .cs
...Management/backstage/Controllers/TokenVaultController .cs
+430
-9
UserController.cs
... Vault Management/backstage/Controllers/UserController.cs
+308
-14
TokenVault.cs
...ault Management/backstage/Models/TokenVault/TokenVault.cs
+37
-1
Department.cs
...ken Vault Management/backstage/Models/Users/Department.cs
+25
-2
User.cs
...ant Token Vault Management/backstage/Models/Users/User.cs
+75
-14
UserForChangePassword.cs
...anagement/backstage/Models/Users/UserForChangePassword.cs
+0
-27
UserForRegister.cs
...ault Management/backstage/Models/Users/UserForRegister.cs
+0
-32
_Layout.cshtml
...en Vault Management/backstage/Views/Shared/_Layout.cshtml
+15
-20
CreateTokenVault.cshtml
...gement/backstage/Views/TokenVault/CreateTokenVault.cshtml
+80
-0
Edit.cshtml
...n Vault Management/backstage/Views/TokenVault/Edit.cshtml
+112
-0
List.cshtml
...n Vault Management/backstage/Views/TokenVault/List.cshtml
+199
-0
ListFields.cshtml
...t Management/backstage/Views/TokenVault/ListFields.cshtml
+114
-0
ListUsers.cshtml
...lt Management/backstage/Views/TokenVault/ListUsers.cshtml
+134
-0
CreateDepartment.cshtml
...t Management/backstage/Views/User/CreateDepartment.cshtml
+68
-0
CreateUser.cshtml
...n Vault Management/backstage/Views/User/CreateUser.cshtml
+87
-0
GetDepartment.cshtml
...ault Management/backstage/Views/User/GetDepartment.cshtml
+83
-0
GetUser.cshtml
...oken Vault Management/backstage/Views/User/GetUser.cshtml
+112
-0
ListDepartments.cshtml
...lt Management/backstage/Views/User/ListDepartments.cshtml
+60
-35
ListUsers.cshtml
...en Vault Management/backstage/Views/User/ListUsers.cshtml
+93
-19
Register.cshtml
...ken Vault Management/backstage/Views/User/Register.cshtml
+0
-98
myStylecss.css
...ken Vault Management/backstage/wwwroot/css/myStylecss.css
+43
-0
site.js
Merchant Token Vault Management/backstage/wwwroot/js/site.js
+4
-0
No files found.
Merchant Token Vault Management/backstage/Controllers/TokenVaultController .cs
View file @
caf7a545
This diff is collapsed.
Click to expand it.
Merchant Token Vault Management/backstage/Controllers/UserController.cs
View file @
caf7a545
This diff is collapsed.
Click to expand it.
Merchant Token Vault Management/backstage/Models/TokenVault/TokenVault.cs
View file @
caf7a545
using
System
;
using
backstage.Models.Users
;
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.DataAnnotations.Schema
;
using
System.Linq
;
...
...
@@ -10,8 +11,10 @@ namespace backstage.Models.TokenVault
{
public
int
vault_id
{
get
;
set
;
}
public
int
merchant_id
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
url
{
get
;
set
;
}
public
string
desc
{
get
;
set
;
}
public
int
type
{
get
;
set
;
}
public
int
enabled
{
get
;
set
;
}
...
...
@@ -20,6 +23,18 @@ namespace backstage.Models.TokenVault
public
int
userCount
{
get
;
set
;
}
}
public
class
TokenVaultForCreate
{
public
int
type
{
get
;
set
;
}
public
int
merchant_id
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
url
{
get
;
set
;
}
public
string
description
{
get
;
set
;
}
}
public
class
TokenVaultResponse
{
...
...
@@ -29,4 +44,25 @@ namespace backstage.Models.TokenVault
//public int count { get; set; }
public
List
<
TokenVault
>
info
{
get
;
set
;
}
}
public
class
Field
{
public
int
id
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
desc
{
get
;
set
;
}
public
string
format_exp
{
get
;
set
;
}
public
int
Enabled
{
get
;
set
;
}
public
string
key_id
{
get
;
set
;
}
public
List
<
User
>
users
{
get
;
set
;
}
}
public
class
FieldsResponse
{
public
int
r
{
get
;
set
;
}
public
string
m
{
get
;
set
;
}
public
string
flags
{
get
;
set
;
}
//public int count { get; set; }
public
List
<
Field
>
fields
{
get
;
set
;
}
}
}
Merchant Token Vault Management/backstage/Models/Users/Department.cs
View file @
caf7a545
...
...
@@ -11,7 +11,6 @@ namespace backstage.Models.Users
//public int Id { get; set; }
public
int
merchant_id
{
get
;
set
;
}
public
string
address
{
get
;
set
;
}
public
string
country_id
{
get
;
set
;
}
public
string
postcode
{
get
;
set
;
}
...
...
@@ -33,13 +32,37 @@ namespace backstage.Models.Users
public
int
tts
{
get
;
set
;
}
}
public
class
DepartmentForCreate
{
//新增後設為 merchant admin 的 user ID
public
int
main_uid
{
get
;
set
;
}
=
1
;
public
string
address
{
get
;
set
;
}
=
"null"
;
public
string
countryid
{
get
;
set
;
}
=
"Taiwan"
;
public
string
postcode
{
get
;
set
;
}
=
"null"
;
public
string
phone
{
get
;
set
;
}
=
"null"
;
public
string
fax
{
get
;
set
;
}
public
string
VATID_verify
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
name_en
{
get
;
set
;
}
=
"null"
;
public
int
enabled
{
get
;
set
;
}
public
string
merchant_type
{
get
;
set
;
}
public
string
merchant_level
{
get
;
set
;
}
public
int
tts
{
get
;
set
;
}
}
public
class
DepartmentsResponse
{
public
int
r
{
get
;
set
;
}
public
string
m
{
get
;
set
;
}
public
int
uid
{
get
;
set
;
}
public
object
m
{
get
;
set
;
}
public
string
flags
{
get
;
set
;
}
public
int
count
{
get
;
set
;
}
public
Department
merchant
{
get
;
set
;
}
public
List
<
Department
>
merchants
{
get
;
set
;
}
}
}
Merchant Token Vault Management/backstage/Models/Users/User.cs
View file @
caf7a545
...
...
@@ -8,34 +8,67 @@ namespace backstage.Models.Users
{
public
class
User
{
public
int
id
{
get
;
set
;
}
public
int
uid
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
name_en
{
get
;
set
;
}
public
string
username
{
get
;
set
;
}
//登入用
public
string
pwd
{
get
;
set
;
}
//新增使用者用
public
string
password
{
get
;
set
;
}
public
List
<
emaildata
>
email
{
get
;
set
;
}
public
int
locked
{
get
;
set
;
}
public
DateTime
creat
ion
_date
{
get
;
set
;
}
public
int
enabled
{
get
;
set
;
}
public
DateTime
creat
ed
_date
{
get
;
set
;
}
public
int
enabled
{
get
;
set
;
}
=
1
;
public
DateTime
birthdate
{
get
;
set
;
}
public
string
marital_status
{
get
;
set
;
}
public
string
gender
{
get
;
set
;
}
public
string
education
{
get
;
set
;
}
public
string
natid
{
get
;
set
;
}
public
string
lang
{
get
;
set
;
}
public
string
lang
{
get
;
set
;
}
=
"zhg"
;
//判斷是否為admin
public
bool
isAdmin
{
get
;
set
;
}
=
false
;
//=========Fields=========
public
List
<
int
>
masks
{
get
;
set
;}
public
string
masksText
{
get
;
set
;
}
public
int
allow_decrypt
{
get
;
set
;
}
public
int
allow_new
{
get
;
set
;
}
public
int
allow_update
{
get
;
set
;
}
public
int
allow_del
{
get
;
set
;
}
public
int
default_mask_id
{
get
;
set
;
}
}
public
class
Mask
{
public
int
id
{
get
;
set
;
}
public
string
mask
{
get
;
set
;
}
public
string
type
{
get
;
set
;
}
}
public
class
emaildata
{
public
int
id
{
get
;
set
;
}
public
string
email
{
get
;
set
;
}
public
string
type
{
get
;
set
;
}
}
public
class
phonedata
{
public
int
id
{
get
;
set
;
}
public
string
phone
{
get
;
set
;
}
public
string
type
{
get
;
set
;
}
//[NotMapped]
//public string newPassword { get; set; }
//[NotMapped]
//public string ConfirmNewPassword { get; set; }
//public byte[] PasswordHash { get; set; }
//public byte[] PasswordSalt { get; set; }
//public int role { get; set; }
}
public
class
UserLogin
{
...
...
@@ -48,16 +81,44 @@ namespace backstage.Models.Users
public
string
flags
{
get
;
set
;
}
}
public
class
GetUserResponse
{
//user/list response
public
int
r
{
get
;
set
;
}
public
string
m
{
get
;
set
;
}
public
User
user
{
get
;
set
;
}
public
List
<
emaildata
>
email
{
get
;
set
;
}
}
public
class
UserResponse
{
//user/list response
public
int
r
{
get
;
set
;
}
public
string
m
{
get
;
set
;
}
public
int
userCount
{
get
;
set
;
}
public
List
<
User
>
Users
{
get
;
set
;
}
public
List
<
User
>
Users
{
get
;
set
;
}
public
User
user
{
get
;
set
;
}
////User/add response
//public string uid { get; set; }
//public string code_time { get; set; }
//public List<Object> verifyEmail { get; set; }
//public string flags { get; set; }
}
public
class
UserAddResponse
{
//user/list response
public
int
r
{
get
;
set
;
}
public
Object
m
{
get
;
set
;
}
//User/add response
public
string
uid
{
get
;
set
;
}
public
string
code_time
{
get
;
set
;
}
public
List
<
Object
>
verifyEmail
{
get
;
set
;
}
public
string
flags
{
get
;
set
;
}
}
}
Merchant Token Vault Management/backstage/Models/Users/UserForChangePassword.cs
deleted
100644 → 0
View file @
ee729155
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.DataAnnotations
;
using
System.Linq
;
using
System.Threading.Tasks
;
namespace
backstage.Models.Users
{
public
class
UserForChangePassword
:
IValidatableObject
{
public
string
Username
{
get
;
set
;
}
[
Required
]
public
string
pwd
{
get
;
set
;
}
[
Required
]
public
string
NewPassword
{
get
;
set
;
}
[
Required
]
public
string
ConfirmNewPassword
{
get
;
set
;
}
public
IEnumerable
<
ValidationResult
>
Validate
(
ValidationContext
validationContext
)
{
if
(
NewPassword
!=
ConfirmNewPassword
)
{
yield
return
new
ValidationResult
(
"兩次密碼輸入不相符"
,
new
string
[]
{
"ConfirmNewPassword"
});
}
}
}
}
Merchant Token Vault Management/backstage/Models/Users/UserForRegister.cs
deleted
100644 → 0
View file @
ee729155
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.DataAnnotations
;
using
System.Linq
;
using
System.Threading.Tasks
;
namespace
backstage.Models.Users
{
public
class
UserForRegister
:
IValidatableObject
{
[
Required
]
[
EmailAddress
]
public
string
Username
{
get
;
set
;
}
[
Required
]
[
StringLength
(
50
,
MinimumLength
=
6
,
ErrorMessage
=
"請輸入6~50位字元當作密碼"
)]
public
string
pwd
{
get
;
set
;
}
[
Required
]
public
string
ConfirmPassword
{
get
;
set
;
}
public
IEnumerable
<
ValidationResult
>
Validate
(
ValidationContext
validationContext
)
{
if
(
pwd
!=
ConfirmPassword
)
{
yield
return
new
ValidationResult
(
"兩次密碼輸入不相符"
,
new
string
[]
{
"ConfirmPassword"
});
}
}
}
}
Merchant Token Vault Management/backstage/Views/Shared/_Layout.cshtml
View file @
caf7a545
...
...
@@ -31,6 +31,8 @@
<link
href=
"~/lib/datetimepicker/css/bootstrap-datetimepicker.css"
rel=
"stylesheet"
/>
<link
href=
"~/css/myStylecss.css"
rel=
"stylesheet"
/>
<link
rel=
"stylesheet"
href=
"https://cdn.jsdelivr.net/npm/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css"
>
@RenderSection("header", required: false)
</head>
...
...
@@ -88,7 +90,7 @@
</li>
<li
class=
"nav-item d-none d-lg-block full-screen-link"
>
<a
class=
"nav-link"
>
...
...
@@ -109,38 +111,30 @@
<ul
class=
"nav "
>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
data-toggle=
"collapse"
href=
"#Member"
aria-expanded=
"false"
aria-controls=
"Member"
>
<span
class=
"menu-title"
>
帳號管理
</span>
<span
class=
"menu-title"
>
Users
</span>
<i
class=
"menu-arrow"
></i>
<i
class=
"mdi mdi-account-multiple menu-icon"
></i>
</a>
<div
class=
"collapse"
id=
"Member"
>
<ul
class=
"nav flex-column sub-menu"
>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"User"
asp-action=
"ListUsers"
>
使用者列表
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"User"
asp-action=
"ListDepartments"
>
部門列表
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"User"
asp-action=
"CreateUser"
>
新增使用者
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"User"
asp-action=
"ListUsers"
>
User List
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"User"
asp-action=
"ListDepartments"
>
Department List
</a></li>
@*
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"Member"
asp-action=
"GetMember"
>
信徒資料
</a></li>
*@
</ul>
</div>
</li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
data-toggle=
"collapse"
href=
"#Income"
aria-expanded=
"false"
>
<span
class=
"menu-title"
>
Token Vault管理
</span>
<i
class=
"menu-arrow"
></i>
<a
class=
"nav-link"
href=
"@Url.Action("
List
",
"
TokenVault
")"
>
<span
class=
"menu-title"
>
Token Vault
</span>
<i
class=
"mdi mdi-database menu-icon"
></i>
</a>
<div
class=
"collapse"
id=
"Income"
>
<ul
class=
"nav flex-column sub-menu"
>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"TokenVault"
asp-action=
"ListTokenVault"
>
Token Vault列表
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
""
asp-action=
""
>
新增Token Vault
</a></li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
""
asp-action=
""
>
Token Entry
</a></li>
@*
<li
class=
"nav-item"
>
<a
class=
"nav-link"
asp-controller=
"FinancialRecordIncome"
asp-action=
"GetIncome"
>
收入紀錄管理
</a></li>
*@
</ul>
</div>
</li>
<li
class=
"nav-item"
>
<a
class=
"nav-link"
data-toggle=
"collapse"
href=
"#FinancialRecordExpenses"
aria-expanded=
"false"
aria-controls=
"FinancialRecordExpenses"
>
<span
class=
"menu-title"
>
Key
Management
</span>
<span
class=
"menu-title"
>
Key
s
</span>
<i
class=
"menu-arrow"
></i>
<i
class=
"mdi mdi-bank menu-icon"
></i>
</a>
...
...
@@ -151,11 +145,11 @@
</ul>
</div>
</li>
</ul>
</nav>
<!-- partial -->
<div
class=
"main-panel"
>
<div
class=
"content-wrapper"
>
...
...
@@ -176,6 +170,7 @@
@*
<script
src=
"~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
></script>
*@
<script
src=
"~/lib/bootstrap-4.5.0-dist/js/bootstrap.js"
></script>
<script
src=
"~/js/functions.js"
></script>
<script
src=
"https://cdn.jsdelivr.net/npm/bootstrap-switch@3.3.4/dist/js/bootstrap-switch.min.js"
></script>
<!-- plugins:js -->
@*
<script
src=
"~/vendors/js/vendor.bundle.base.js"
></script>
*@
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/CreateTokenVault.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.TokenVault.TokenVaultForCreate
@{
ViewData["Title"] = "新增TokenVault";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">新增TokenVault</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">新增TokenVault</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-6 form-group required">
<select id="selectDepartmentList" class="form-control" asp-items="ViewBag.DepartmentsList">
<option value="">選擇部門</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="description" class="col-form-label" for=""></label>
<input asp-for="description" type="text" class="form-control" id="">
<span asp-validation-for="description" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">新增</button>
<a type="button" class="btn btn-light" asp-action="ListDepartments">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/TokenVault/Edit.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.TokenVault.TokenVault
@{
ViewData["Title"] = "編輯TokenVault";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">編輯TokenVault</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">編輯TokenVault</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-6 form-group required">
<label asp-for="merchant_id" class="col-form-label" for=""></label>
<select id="selectDepartmentList" class="form-control" asp-items="ViewBag.DepartmentsList" asp-for="merchant_id">
</select>
</div>
<div class="col-md-4 form-group required">
<label asp-for="created" class="col-form-label" for=""></label>
<input asp-for="created" type="text" class="form-control" disabled>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="desc" class="col-form-label" for=""></label>
<input asp-for="desc" type="text" class="form-control" id="">
<span asp-validation-for="desc" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="type" class="col-form-label" for=""></label>
<input asp-for="type" type="text" class="form-control" id="" disabled>
<span asp-validation-for="type" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="enabled" class="col-form-label" for=""></label>
<input asp-for="enabled" type="text" class="form-control" id="" disabled>
<span asp-validation-for="enabled" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="tokenCount" class="col-form-label" for=""></label>
<input asp-for="tokenCount" type="text" class="form-control" id="" disabled>
</div>
<div class="col-md-4 form-group required">
<label asp-for="userCount" class="col-form-label" for=""></label>
<input asp-for="userCount" type="text" class="form-control" id="" disabled>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">編輯</button>
<a type="button" class="btn btn-light" asp-action="List">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/TokenVault/List
TokenVault
.cshtml
→
Merchant Token Vault Management/backstage/Views/TokenVault/List.cshtml
View file @
caf7a545
...
...
@@ -3,6 +3,7 @@
ViewData["Title"] = "TokenVault列表管理";
}
<div class="page-header">
<h3 class="page-title">TokenVault列表管理</h3>
<input id="msg" hidden value="@TempData["msg"]" />
...
...
@@ -17,46 +18,56 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<form method="get" asp-action="List">
<h4 class="card-title">TokenVault列表管理</h4>
<div class="row justify-content-center">
<div class="col-12 col-md-10 no-padding rank-space">
<div class="row justify-content-center">
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active">資料代碼保險庫</li>
</ul>
</div>
</div>
<div class="row justify-content-center">
<div class="col-12 col-md-10 no-padding rank-space">
<select id="selectDepartmentList"class="form-control col-10 col-md form-control margin-right margin-top" asp-items="ViewBag.DepartmentsList">
<div class="row justify-content-between">
<div class="col-md-auto">
<select id="selectDepartmentList" class="form-control margin-right margin-top" asp-items="ViewBag.DepartmentsList">
<option value="">選擇部門</option>
</select>
</div>
<div class="
row
">
<
div id="errorMsg" asp-validation-summary="All" class="text-danger"></div
>
<div class="
col-md-auto
">
<
a type="button" class="btn btn-info float-right mb-2" asp-action="CreateTokenVault">Create</a
>
</div>
</div>
<div class="row">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>vault_id</th>
<th>name</th>
<th>desc</th>
<th>type</th>
<th>created</th>
<th>tokenCount</th>
<th>userCount</th>
@*<th class="tblColEllipsis">備註</th>*@
<th></th>
</tr>
</thead>
<tbody id="tbody">
@*@if (Model.info.Count>0)
</div>
<div>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>編號</th>
<th>名稱</th>
<th>敘述</th>
<th>種類</th>
<th>建立日期</th>
<th>狀態</th>
<th>管理</th>
<th>代碼數量</th>
<th>使用者數量</th>
@*<th class="tblColEllipsis">備註</th>*@
<th></th>
</tr>
</thead>
<tbody id="tbody">
@*@if (Model.info.Count>0)
{
@foreach (var i in Model.info)
{
...
...
@@ -68,19 +79,18 @@
<td>@i.created</td>
<td>@i.tokenCount</td>
<td>@i.userCount</td>
</tr>
}
}*@
</tbody>
</table>
</div>
</tbody>
</table>
</div>
</div>
</form>
</div>
</div>
...
...
@@ -91,7 +101,7 @@
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
...
...
@@ -101,28 +111,85 @@
showAlert(IsSuccess, msg);
}
// 在頁面載入時檢查 localStorage 是否有選單值
var selectedOption = localStorage.getItem('selectedOption');
if (selectedOption) {
// 觸發 AJAX 請求並填入資料
loadData(selectedOption);
$('#selectDepartmentList').val(selectedOption);
}
// 在選單變更時保存選擇的值至 localStorage
$('#selectDepartmentList').change(function () {
var selectedOption = $(this).val();
localStorage.setItem('selectedOption', selectedOption);
});
var selectedValue = $('#selectDepartmentList').val();
console.log('selectedValue=' + selectedValue);
if (selectedValue != 0) {
// 使用 AJAX 傳遞選擇的值
$.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
type: 'POST', // 或 'GET',根據實際需求
data: { merchantId: selectedValue },
success: function (response) {
$('#tbody').empty();
$('#tbody').append(response);
// 在成功取得回應後的處理邏輯
//console.log(response);
},
error: function (xhr, status, error) {
// 在發生錯誤時的處理邏輯
console.error(error);
}
});
}
// 當選擇下拉選單時觸發事件
$('#selectDepartmentList').change(function () {
var selectedValue = $(this).val(); // 獲取選擇的值
loadData(selectedValue);
});
// 定義 AJAX 請求函式,將選單值傳遞至後端並填入 tbody
function loadData(selectedOption) {
// 使用 AJAX 傳遞選擇的值
$.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
type: 'POST', // 或 'GET',根據實際需求
data: { merchantId: selected
Value
},
data: { merchantId: selected
Option
},
success: function (response) {
$('#tbody').empty();
$('#tbody').append(response);
// 在成功取得回應後的處理邏輯
console.log(response);
//
console.log(response);
},
error: function (xhr, status, error) {
// 在發生錯誤時的處理邏輯
console.error(error);
}
});
}
//vault編輯按鈕
$(document).on('click', '.tokenVaultRow', function () {
var vaultid = $(this).data('vaultid');
var merchantid = $(this).data('merchantid');
console.log('vaultid=' + vaultid);
window.location.href = '/tokenvault/Edit/' + vaultid + "?merchantid=" + merchantid;
});
//欄位按鈕
$(document).on('click', '.fieldsBtn', function () {
var vaultid = $(this).data('vault_id');
var merchantid = $(this).data('merchant_id');
console.log('vaultid=' + vaultid);
window.location.href = '/tokenvault/ListFields/' + "?vault_id=" + vaultid + "&Merchant_id=" + merchantid;
});
})
...
...
Merchant Token Vault Management/backstage/Views/TokenVault/ListFields.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.TokenVault.FieldsResponse
@{
ViewData["Title"] = "Fields列表管理";
}
<div class="page-header">
<h3 class="page-title">Fields列表管理列表管理</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">資料代碼保險庫</a></li>
<li class="breadcrumb-item ">欄位資料</li>
</ul>
</div>
</div>
<div>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>編號</th>
<th>名稱</th>
<th>敘述</th>
<th>格式</th>
<th>啟用</th>
<th>管理</th>
</tr>
</thead>
<tbody id="tbody">
@if (Model.fields.Count > 0)
{
@foreach (var i in Model.fields)
{
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.desc</td>
<td>@i.format_exp</td>
<td>@i.Enabled</td>
@*<td>@i.key_id</td>*@
<td>
<!-- <button class="btn btnPermission btn-sm" data-toggle="modal" data-target="#permission">資料遮罩</button> -->
<a href="tokenVault_fields_masks.html" class="btn btnPermission btn-sm">資料遮罩</a>
<a class="btn btnPermission btn-sm usersBtn">使用者</a>
</td>
</tr>
}
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
//user按鈕
$(document).on('click', '.usersBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListUsers/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
})
</script>
}
\ No newline at end of file
Merchant Token Vault Management/backstage/Views/TokenVault/ListUsers.cshtml
0 → 100644
View file @
caf7a545
@model List<backstage.Models.Users.User>
@{
ViewData["Title"] = "欄位Users列表管理";
}
<div class="page-header">
<h3 class="page-title">欄位Users列表管理</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">資料代碼保險庫</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">欄位資料</a></li>
<li class="breadcrumb-item active">使用者</li>
</ul>
</div>
</div>
<div>
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">加入使用者</a>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>編號</th>
<th>名稱</th>
<th>username</th>
<th>遮罩</th>
<th>允許解密</th>
<th>允許新增</th>
<th>允許更新</th>
<th>允許刪除</th>
<th>預設遮罩ID</th>
<th>管理</th>
</tr>
</thead>
<tbody id="tbody">
@if (Model.Count > 0)
{
@foreach (var i in Model)
{
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td>@i.masksText</td>
<td>@i.allow_decrypt</td>
<td>@i.allow_new</td>
<td>@i.allow_update</td>
<td>@i.allow_del</td>
<td>@i.default_mask_id</td>
<td>
<a href="tokenVault_fields_users.html" class="btn btnPermission btn-sm">移除使用者</a>
</td>
</tr>
}
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 模态框 -->
<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 class="form-control" asp-items="ViewBag.users">
<!-- 其他用户选项 -->
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">確認</button>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
})
</script>
}
\ No newline at end of file
Merchant Token Vault Management/backstage/Views/User/CreateDepartment.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.Users.DepartmentForCreate
@{
ViewData["Title"] = "新增部門";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">新增部門</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">新增部門</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group ">
<label asp-for="phone" class="col-form-label" for="phone"></label>
<input asp-for="phone" class="form-control" id="phone">
<span asp-validation-for="phone" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">新增</button>
<a type="button" class="btn btn-light" asp-action="ListDepartments">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/User/CreateUser.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.Users.User
@{
ViewData["Title"] = "新增使用者";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">新增使用者</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">新增使用者</h4>
<form class="forms-sample" method="post" asp-action="CreateUser" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="username" class="col-form-label" for="username"></label>
<input asp-for="username" class="form-control" id="username">
<span asp-validation-for="username" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-6 form-group">
<label asp-for="email" class="col-form-label" for="email">email</label>
<input asp-for="email" class="form-control" id="email">
<span asp-validation-for="email" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="password" class="col-form-label" for=""></label>
<input asp-for="password" type="text" class="form-control" id="">
<span asp-validation-for="password" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">新增</button>
<a type="button" class="btn btn-light" asp-action="ListUsers">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/User/GetDepartment.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.Users.Department
@{
ViewData["Title"] = "編輯部門";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">編輯部門</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">編輯部門</h4>
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">加入使用者</a>
<div>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="merchant_id" class="col-form-label" for=""></label>
<input asp-for="merchant_id" type="text" class="form-control" id="" disabled>
</div>
<div class="col-md-4 form-group ">
<label asp-for="creation_date" class="col-form-label" for="creation_date"></label>
<input asp-for="creation_date" class="form-control" id="creation_date" disabled>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group ">
<label asp-for="phone" class="col-form-label" for="phone"></label>
<input asp-for="phone" class="form-control" id="phone">
<span asp-validation-for="phone" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">送出</button>
<a type="button" class="btn btn-light" asp-action="ListDepartments">返回列表</a>
</form>
</div>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/User/GetUser.cshtml
0 → 100644
View file @
caf7a545
@model backstage.Models.Users.User
@{
ViewData["Title"] = "編輯使用者";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">編輯使用者</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">編輯使用者</h4>
<form class="forms-sample" method="post" asp-action="CreateUser" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="uid" class="col-form-label" for=""></label>
<input asp-for="uid" type="text" class="form-control" id="" disabled>
</div>
<div class="col-md-4 form-group required">
<label asp-for="created_date" class="col-form-label" for="creation_date"></label>
<input asp-for="created_date" class="form-control" id="creation_date" disabled>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="username" class="col-form-label" for="username"></label>
<input asp-for="username" class="form-control" id="username">
<span asp-validation-for="username" class="text-danger"></span>
</div>
</div>
<div class="row">
@if (Model.email!=null)
@if (Model.email.Count > 0)
{
@foreach (var item in Model.email)
{
<div class="col-md-2 form-group">
<label asp-for="@item.type" class="col-form-label" for="item.type">type</label>
<input value="@item.type" class="form-control" />
<span asp-validation-for="@item.type" class="text-danger"></span>
</div>
<div class="col-md-6 form-group">
<label asp-for="@item.email" class="col-form-label" for="item.email">email</label>
<input value="@item.email" class="form-control" />
<span asp-validation-for="@item.email" class="text-danger"></span>
</div>
}
}
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="password" class="col-form-label" for=""></label>
<input asp-for="password" type="text" class="form-control" id="">
<span asp-validation-for="password" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">送出</button>
<a type="button" class="btn btn-light" asp-action="ListUsers">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
Merchant Token Vault Management/backstage/Views/User/ListDepartments.cshtml
View file @
caf7a545
...
...
@@ -13,6 +13,7 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateDepartment">新增部門</a>
@*列表*@
<div class="">
...
...
@@ -20,22 +21,23 @@
<thead>
<tr>
<th>merchant_id</th>
<th>address</th>
<th>name</th>
@*<th>address</th>
<th>country_id</th>
<th>postcode</th>
<th>postcode</th>
*@
<th>phone</th>
@*<th>fax</th>*@
<th>vatid</th>
<th>name</th>
<th>enabled</th>
@*<th>vatid</th>*@
@*<th>enabled</th>*@
<th>creation_date</th>
@*<th>vatid_verify</th>
<th>deposit_book_verify</th>
<th>user_natid_verify</th>
<th>enabled_transaction</th>*@
<th>merchant_type</th>
<th>deposit_book_verify</th>
<th>user_natid_verify</th>
<th>enabled_transaction</th>*@
@*
<th>merchant_type</th>
<th>merchant_level</th>
<th>tts</th>
<th>tts</th>
*@
</tr>
...
...
@@ -47,30 +49,31 @@
@foreach (var i in Model.merchants)
{
<tr id="@i.merchant_id">
<td>@i.merchant_id</td>
<td>@i.address</td>
<td>@i.country_id</td>
<td>@i.postcode</td>
<td>@i.phone</td>
@*<td>@i.fax</td>*@
<td>@i.vatid</td>
<td>@i.name</td>
<td>@i.enabled</td>
<td>@i.creation_date</td>
@*<td>@i.vatid_verify</td>
<td>@i.deposit_book_verify</td>
<td>@i.user_natid_verify</td>
<td>@i.enabled_transaction</td>*@
<td>@i.merchant_type</td>
<td>@i.merchant_level</td>
<td>@i.tts</td>
@*<td class="text-right">
<a class="btn btn-primary" asp-action="EditEventItem" asp-route-id="@i.Id"><i class="mdi mdi-grease-pencil"></i>編輯</a>
<button class="btn btn-inverse-danger" id="eventItem-delete-btn" data-id="@i.Id" data-name="@i.Title"><i class="mdi mdi-delete-forever"></i>刪除</button>
</td>*@
</tr>
<tr class="departmentRow" data-merchantId="@i.merchant_id">
<td>@i.merchant_id</td>
<td>@i.name</td>
@*<td>@i.address</td>
<td>@i.country_id</td>
<td>@i.postcode</td>*@
<td>@i.phone</td>
@*<td>@i.fax</td>*@
@*<td>@i.vatid</td>
<td>@i.enabled</td>*@
<td>@i.creation_date</td>
@*<td>@i.vatid_verify</td>
<td>@i.deposit_book_verify</td>
<td>@i.user_natid_verify</td>
<td>@i.enabled_transaction</td>*@
@*<td>@i.merchant_type</td>
<td>@i.merchant_level</td>
<td>@i.tts</td>*@
@*<td class="text-right">
<a class="btn btn-primary" asp-action="EditEventItem" asp-route-id="@i.Id"><i class="mdi mdi-grease-pencil"></i>編輯</a>
<button class="btn btn-inverse-danger" id="eventItem-delete-btn" data-id="@i.Id" data-name="@i.Title"><i class="mdi mdi-delete-forever"></i>刪除</button>
</td>*@
</tr>
}
}
...
...
@@ -84,4 +87,26 @@
</div>
</div>
</div>
\ No newline at end of file
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
$('.departmentRow').click(function () {
var merchantId = $(this).data('merchantid');
window.location.href = '/User/GetDepartment/' + merchantId; // 根據你的路由設定和控制器來導航到部門詳細資料頁面
});
</script>
}
Merchant Token Vault Management/backstage/Views/User/ListUsers.cshtml
View file @
caf7a545
...
...
@@ -9,10 +9,13 @@
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div id="adminStatus" style="float: left;">User數量:@ViewBag.userCount / Admin 數量:@ViewBag.adminCount </div>
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateUser">新增使用者</a>
@*列表*@
<div class="">
...
...
@@ -21,17 +24,19 @@
<tr>
<th>uid</th>
<th>name</th>
<th>name_en</th>
@*<th>name_en</th>*@
<th>username</th>
<th>locked</th>
<th>email</th>
@*<th>locked</th>*@
<th>creation_date</th>
<th>enabled</th>
<th>birthdate</th>
<th>marital_status</th>
<th>gender</th>
<th>education</th>
<th>natid</th>
<th>lang</th>
<th>管理員</th>
@*<th>birthdate</th>
<th>marital_status</th>
<th>gender</th>
<th>education</th>
<th>natid</th>
<th>lang</th>*@
</tr>
...
...
@@ -43,20 +48,34 @@
@foreach (var i in Model.Users)
{
<tr id="@i.uid">
<tr
class="userRow" data-user-
id="@i.uid">
<td>@i.uid</td>
<td>@i.name</td>
<td>@i.name_en</td>
@*<td>@i.name_en</td>*@
<td>@i.username</td>
<td>@i.locked</td>
<td>@i.creation_date</td>
@if (i.email!=null)
@if (i.email.Count > 0)
{
<td>@i.email[0].email</td>
}
else
{
<td></td>
}
@*<td>@i.locked</td>*@
<td>@i.created_date</td>
<td>@i.enabled</td>
<td>@i.birthdate</td>
<td>@i.marital_status</td>
<td>@i.gender</td>
<td>@i.education</td>
<td>@i.natid</td>
<td>@i.lang</td>
<td> <input type="checkbox" class="toggleButton" @(i.isAdmin ? "checked" : "")></td>
@*@if (i.isAdmin)
{ <td>是</td>}
else { <td></td>}*@
@*<td>@i.birthdate</td>
<td>@i.marital_status</td>
<td>@i.gender</td>
<td>@i.education</td>
<td>@i.natid</td>
<td>@i.lang</td>*@
@*<td class="text-right">
<a class="btn btn-primary" asp-action="EditEventItem" asp-route-id="@i.Id"><i class="mdi mdi-grease-pencil"></i>編輯</a>
...
...
@@ -76,4 +95,59 @@
</div>
</div>
</div>
\ No newline at end of file
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
$('table tbody tr').each(function () {
var uid = $(this).find('td:first-child').text(); // 獲取行中的 UID 值
console.log('uid=' + uid)
if (uid === '1') {
$(this).find('.toggleButton').prop('disabled', true); // 將切換按鈕設為禁用
return false; // 停止迴圈
}
});
$('.toggleButton').bootstrapSwitch({
onText: 'ON',
offText: 'OFF',
onColor: 'success',
offColor: 'danger',
size: 'small',
onSwitchChange: function (event, state) {
var userId = $(this).data('userId');
var isAdmin = $(this).data('admin');
// 使用 AJAX 發送請求,處理狀態變更事件
$.ajax({
url: '/YourController/Toggle',
type: 'POST',
data: { userId: userId, isAdmin: isAdmin, state: state },
success: function (response) {
// 在成功回調中處理回應
console.log(response);
},
error: function (error) {
// 在錯誤回調中處理錯誤
console.log(error);
}
});
}
});
$('.userRow').click(function () {
var userId = $(this).data('user-id');
window.location.href = '/User/GetUser/' + userId; // 根據你的路由設定和控制器來導航到使用者詳細資料頁面
});
</script>
}
\ No newline at end of file
Merchant Token Vault Management/backstage/Views/User/Register.cshtml
deleted
100644 → 0
View file @
ee729155
@model backstage.Models.Users.UserForRegister
@{
ViewData["Title"] = "Register";
}
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<!-- Required meta tags -->
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, shrink-to-fit=no"
>
<title>
@ViewData["Title"]
</title>
<!-- End Required meta tags -->
<!-- plugins:css -->
<link
rel=
"stylesheet"
href=
"~/vendors/mdi/css/materialdesignicons.min.css"
>
<link
rel=
"stylesheet"
href=
"~/vendors/css/vendor.bundle.base.css"
>
<!-- endinject -->
<link
rel=
"stylesheet"
href=
"~/lib/bootstrap/dist/css/bootstrap.min.css"
/>
@*
<link
rel=
"stylesheet"
href=
"~/css/site.css"
/>
*@
<!-- Layout styles -->
<link
rel=
"stylesheet"
href=
"~/css/style.css"
>
<!-- End layout styles -->
<link
rel=
"shortcut icon"
href=
"~/images/favicon.png"
/>
</head>
<body>
<input
id=
"msg"
hidden
value=
"@TempData["
msg
"]"
/>
<div
class=
"container-scroller"
>
<div
class=
"container-fluid page-body-wrapper full-page-wrapper"
>
<div
class=
"content-wrapper d-flex align-items-center auth"
>
<div
class=
"row flex-grow"
>
<div
class=
"col-lg-4 mx-auto"
>
<div
class=
"auth-form-light text-left p-5"
>
<div
class=
"brand-logo"
>
<img
src=
"~/images/logo.svg"
>
</div>
<h4
class=
"text-center"
>
濟福寺景德祠
</h4>
<!-- <h6 class="font-weight-light">基本資料</h6> -->
<form
class=
"pt-3"
method=
"post"
asp-action=
"register"
asp-route-ReturnUrl=
"/User/Login"
>
<div
id=
"errorMsg"
asp-validation-summary=
"All"
class=
"text-danger"
></div>
<div
class=
"form-group"
>
<input
class=
"form-control form-control-lg"
asp-for=
"Username"
placeholder=
"e-mail"
/>
<span
asp-validation-for=
"Username"
class=
"text-danger"
></span>
</div>
<div
class=
"form-group"
>
<input
class=
"form-control form-control-lg"
type=
"password"
asp-for=
"pwd"
placeholder=
"密碼"
/>
<span
asp-validation-for=
"pwd"
class=
"text-danger"
></span>
</div>
<div
class=
"form-group"
>
<input
class=
"form-control form-control-lg"
type=
"password"
asp-for=
"ConfirmPassword"
placeholder=
"確認密碼"
/>
<span
asp-validation-for=
"ConfirmPassword"
class=
"text-danger"
></span>
</div>
<div
class=
"mt-3"
>
<button
type=
"submit"
class=
"btn btn-block btn-gradient-primary btn-lg font-weight-medium"
>
註冊
</button>
</div>
@*
<a
asp-action=
"Login"
class=
"text-center mt-4 font-weight-light"
>
返回登入
</a>
*@
<div
class=
"text-center mt-4 font-weight-light"
><a
asp-action=
"Login"
class=
"text-primary"
>
返回登入
</a></div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content-wrapper ends -->
@*
<script
src=
"~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
></script>
*@
<script
src=
"~/lib/jquery/dist/jquery.min.js"
></script>
<script
src=
"~/js/site.js"
asp-append-version=
"true"
></script>
<!-- plugins:js -->
<script
src=
"~/vendors/js/vendor.bundle.base.js"
></script>
<!-- endinject -->
<!-- Plugin js for this page -->
<!-- End plugin js for this page -->
<!-- inject:js -->
<script
src=
"~/js/off-canvas.js"
></script>
<script
src=
"~/js/hoverable-collapse.js"
></script>
<script
src=
"~/js/misc.js"
></script>
<!-- endinject -->
<!-- Custom js for this page -->
<script
src=
"~/js/file-upload.js"
></script>
<!-- End custom js for this page -->
<script
src=
"~/js/jquery.ba-dotimeout.js"
></script>
<script
src=
"~/js/User.js"
></script>
</body>
</html>
Merchant Token Vault Management/backstage/wwwroot/css/myStylecss.css
View file @
caf7a545
...
...
@@ -17,4 +17,47 @@
width
:
100%
;
border
:
0
;
background
:
url(/images/xian.png)
center
bottom
no-repeat
;
}
.btn.btnPermission
{
display
:
inline-block
;
padding
:
3px
8px
;
color
:
#ffffff
!important
;
background-color
:
#818181
;
border
:
none
;
-webkit-transition-duration
:
0.2s
;
transition-duration
:
0.2s
;
cursor
:
pointer
;
}
.tokenVaultRow
{
cursor
:
pointer
;
}
.breadcrumb_memberGo
{
background-color
:
#fff
!important
;
/*margin-top: 20px !important;*/
/* margin-bottom: 50px !important; */
padding-left
:
0px
!important
;
padding-right
:
0px
!important
;
padding-top
:
0px
!important
;
font-size
:
0.875rem
;
}
.breadcrumb
{
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
padding
:
0.75rem
1rem
;
margin-bottom
:
1rem
;
list-style
:
none
;
background-color
:
#e9ecef
;
border
:
0rem
!important
;
}
.breadcrumb-item.active
{
color
:
#6c757d
;
}
.breadcrumb-item
+
.breadcrumb-item
{
padding-left
:
0.5rem
;
}
\ No newline at end of file
Merchant Token Vault Management/backstage/wwwroot/js/site.js
View file @
caf7a545
...
...
@@ -47,3 +47,7 @@ function showAlert(status, msg) {
$
(
'form'
).
submit
();
})
$
(
'#cancelBtn'
).
click
(
function
()
{
$
(
'input'
).
val
(
''
);
})
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