Commit 4eecaac7 authored by DESKTOP-KIP9E0Q\jason's avatar DESKTOP-KIP9E0Q\jason

update

parent 947640ad
...@@ -12,6 +12,11 @@ using backstage.Models.Keys; ...@@ -12,6 +12,11 @@ using backstage.Models.Keys;
using System.Net.Http; using System.Net.Http;
using System.Security.Claims; using System.Security.Claims;
using TokenVault_management.Models;
using backstage.Models;
using Microsoft.Extensions.Localization;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
namespace backstage.Controllers namespace backstage.Controllers
{ {
...@@ -23,14 +28,22 @@ namespace backstage.Controllers ...@@ -23,14 +28,22 @@ namespace backstage.Controllers
private readonly IConfiguration _config; private readonly IConfiguration _config;
private readonly ICallApi _callApi; private readonly ICallApi _callApi;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IStringLocalizer<UserController> _localizer;
private readonly string _currentLanguage;
/// <summary> /// <summary>
/// 讀取組態用 /// 讀取組態用
/// </summary> /// </summary>
public KeyController(IConfiguration config, ICallApi callApi) public KeyController(IConfiguration config, ICallApi callApi, IHttpContextAccessor httpContextAccessor, IStringLocalizer<UserController> localizer)
{ {
_config = config; _config = config;
_callApi = callApi; _callApi = callApi;
_httpContextAccessor = httpContextAccessor;
_localizer = localizer;
var requestCultureFeature = _httpContextAccessor.HttpContext.Features.Get<IRequestCultureFeature>();
var currentCulture = requestCultureFeature.RequestCulture.Culture;
_currentLanguage = currentCulture.TwoLetterISOLanguageName;
} }
...@@ -44,9 +57,9 @@ namespace backstage.Controllers ...@@ -44,9 +57,9 @@ namespace backstage.Controllers
var url = _config["IP"] + "/security/key/list"; var url = _config["IP"] + "/security/key/list";
var httpMethod = HttpMethod.Post; var httpMethod = HttpMethod.Post;
var parameters = new Dictionary<string, string> var parameters = new Dictionary<string, string>
{ {
}; };
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod); var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess) if (apiResult.IsSuccess)
...@@ -68,7 +81,7 @@ namespace backstage.Controllers ...@@ -68,7 +81,7 @@ namespace backstage.Controllers
catch (Exception e) catch (Exception e)
{ {
TempData["IsSuccess"] = false; TempData["IsSuccess"] = false;
TempData["msg"] = e.Message+e.InnerException?.Message; TempData["msg"] = e.Message + e.InnerException?.Message;
return View(); return View();
} }
...@@ -83,8 +96,75 @@ namespace backstage.Controllers ...@@ -83,8 +96,75 @@ namespace backstage.Controllers
} }
/// <summary>
/// ajax
/// </summary>
/// <returns></returns>
[Authorize(Policy = "AdminOnly")]
[HttpPost]
public async Task<ResultModel> DeleteKey(int keyId)
{
var result = new ResultModel();
string msg;
#region key/list
var url = _config["IP"] + "/security/key";
var httpMethod = HttpMethod.Delete;
var parameters = new Dictionary<string, string>
{
{ "id",keyId.ToString()},
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
try
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{
switch (_currentLanguage)
{
case "en":
msg = "Delete 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 = false;
result.Message = apiResult.Message;
return result;
#endregion
}
} }
......
...@@ -1378,99 +1378,11 @@ namespace backstage.Controllers ...@@ -1378,99 +1378,11 @@ namespace backstage.Controllers
//刪除MASK ajax //刪除MASK ajax
[Authorize(Policy = "AdminOnly")] [Authorize(Policy = "AdminOnly")]
[HttpPost] [HttpPost]
public async Task<ResultModel> DeleteMask(IFormCollection form) public async Task<ResultModel> DeleteMask(int merchant_id, int vault_id, int mask_id)
{ {
var result = new ResultModel(); 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>
{
{ "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;
} }
......
...@@ -117,17 +117,14 @@ ...@@ -117,17 +117,14 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Number of data" xml:space="preserve"> <data name="Modify the number of Token Vault Entry this month" xml:space="preserve">
<value>資料數量</value> <value>本月修改代碼化保險庫入口數量</value>
</data>
<data name="Number of data modifications this month" xml:space="preserve">
<value>本月資料修改數量</value>
</data> </data>
<data name="Number of departments" xml:space="preserve"> <data name="Number of departments" xml:space="preserve">
<value>部門數量</value> <value>部門數量</value>
</data> </data>
<data name="Number of new data this month" xml:space="preserve"> <data name="Number of new Token Vault Entry added this month" xml:space="preserve">
<value>本月新資料數量</value> <value>本月新增代碼化保險庫入口數量</value>
</data> </data>
<data name="Number of Token Vaults" xml:space="preserve"> <data name="Number of Token Vaults" xml:space="preserve">
<value>Token Vault數量</value> <value>Token Vault數量</value>
...@@ -135,4 +132,7 @@ ...@@ -135,4 +132,7 @@
<data name="Statistic" xml:space="preserve"> <data name="Statistic" xml:space="preserve">
<value>數據統計</value> <value>數據統計</value>
</data> </data>
<data name="Total number of Token Vault Entry" xml:space="preserve">
<value>代碼化保險庫入口總數量</value>
</data>
</root> </root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Delete key" xml:space="preserve">
<value>刪除鑰匙</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Encryption" xml:space="preserve">
<value>加密</value>
</data>
<data name="Expiration" xml:space="preserve">
<value>到期日期</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Keys List" xml:space="preserve">
<value>鑰匙列表</value>
</data>
<data name="Last Update" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
...@@ -126,28 +126,34 @@ ...@@ -126,28 +126,34 @@
<data name="Creation Date" xml:space="preserve"> <data name="Creation Date" xml:space="preserve">
<value>建立日期</value> <value>建立日期</value>
</data> </data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Description" xml:space="preserve"> <data name="Description" xml:space="preserve">
<value>描述</value> <value>描述</value>
</data> </data>
<data name="Management" xml:space="preserve"> <data name="Manage" xml:space="preserve">
<value>管理</value> <value>管理</value>
</data> </data>
<data name="Name" xml:space="preserve"> <data name="Name" xml:space="preserve">
<value>名稱</value> <value>名稱</value>
</data> </data>
<data name="Number of data" xml:space="preserve"> <data name="Number of codes" xml:space="preserve">
<value>資料數量</value> <value>代碼數量</value>
</data> </data>
<data name="Number of users" xml:space="preserve"> <data name="Number of users" xml:space="preserve">
<value>使用者數量</value> <value>使用者數量</value>
</data> </data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Status" xml:space="preserve"> <data name="Status" xml:space="preserve">
<value>狀態</value> <value>狀態</value>
</data> </data>
<data name="Token Vault List" xml:space="preserve"> <data name="Token Vault List" xml:space="preserve">
<value>Token Vault列表管理</value> <value>代碼化保險庫列管理</value>
</data> </data>
<data name="Tpyes" xml:space="preserve"> <data name="Tpye" xml:space="preserve">
<value>種類</value> <value>種類</value>
</data> </data>
</root> </root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add mask" xml:space="preserve">
<value>新增遮罩</value>
</data>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field" xml:space="preserve">
<value>欄位</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Is it a unique value" xml:space="preserve">
<value>是否為唯一值</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
...@@ -126,25 +126,25 @@ ...@@ -126,25 +126,25 @@
<data name="Create Department" xml:space="preserve"> <data name="Create Department" xml:space="preserve">
<value>新增部門</value> <value>新增部門</value>
</data> </data>
<data name="creation_date" xml:space="preserve"> <data name="Creation Date" xml:space="preserve">
<value>建立日期</value> <value>建立日期</value>
</data> </data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve"> <data name="Department List" xml:space="preserve">
<value>部門列表</value> <value>部門列表</value>
</data> </data>
<data name="merchant_id" xml:space="preserve"> <data name="Name" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<value>名稱</value> <value>名稱</value>
</data> </data>
<data name="phone" xml:space="preserve"> <data name="Phone" xml:space="preserve">
<value>電話</value> <value>電話</value>
</data> </data>
<data name="submit" xml:space="preserve"> <data name="Submit" xml:space="preserve">
<value>送出</value> <value>送出</value>
</data> </data>
<data name="username" xml:space="preserve"> <data name="Username" xml:space="preserve">
<value>使用者名稱</value> <value>使用者名稱</value>
</data> </data>
</root> </root>
\ No newline at end of file
...@@ -123,22 +123,22 @@ ...@@ -123,22 +123,22 @@
<data name="Create" xml:space="preserve"> <data name="Create" xml:space="preserve">
<value>新增部門</value> <value>新增部門</value>
</data> </data>
<data name="creation_date" xml:space="preserve"> <data name="Creation Date" xml:space="preserve">
<value>建立日期</value> <value>建立日期</value>
</data> </data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve"> <data name="Department List" xml:space="preserve">
<value>部門列表</value> <value>部門列表</value>
</data> </data>
<data name="merchant_id" xml:space="preserve"> <data name="Name" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<value>名稱</value> <value>名稱</value>
</data> </data>
<data name="phone" xml:space="preserve"> <data name="Phone" xml:space="preserve">
<value>電話</value> <value>電話</value>
</data> </data>
<data name="username" xml:space="preserve"> <data name="Username" xml:space="preserve">
<value>使用者名稱</value> <value>使用者名稱</value>
</data> </data>
</root> </root>
\ No newline at end of file
...@@ -124,13 +124,13 @@ ...@@ -124,13 +124,13 @@
<value>Admin數量</value> <value>Admin數量</value>
</data> </data>
<data name="Create" xml:space="preserve"> <data name="Create" xml:space="preserve">
<value>新增</value> <value>新增使用者</value>
</data> </data>
<data name="creation_date" xml:space="preserve"> <data name="creation_date" xml:space="preserve">
<value>建立日期</value> <value>建立日期</value>
</data> </data>
<data name="Email" xml:space="preserve"> <data name="Email" xml:space="preserve">
<value>電子郵件</value> <value>電子信箱</value>
</data> </data>
<data name="enabled" xml:space="preserve"> <data name="enabled" xml:space="preserve">
<value>啟用</value> <value>啟用</value>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card"> <div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title">Token Vault Entry <br>@Localizer["Number of data"]</h4> <h4 class="card-title">Token Vault Entry <br>@Localizer["Total number of Token Vault Entry"]</h4>
<div class="card-content text-center"> <div class="card-content text-center">
<img src="~/images/admin-vault-data.svg" class="img-fuild"> <img src="~/images/admin-vault-data.svg" class="img-fuild">
<p class="number text-center">200</p> <p class="number text-center">200</p>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card"> <div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of new data this month"]</h4> <h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of new Token Vault Entry added this month"]</h4>
<div class="card-content text-center"> <div class="card-content text-center">
<img src="~/images/admin-vault-add.svg" class="img-fuild"> <img src="~/images/admin-vault-add.svg" class="img-fuild">
<p class="number text-center">10</p> <p class="number text-center">10</p>
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card"> <div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of data modifications this month"]</h4> <h4 class="card-title">Token Vualt Entry<br />@Localizer["Modify the number of Token Vault Entry this month"]</h4>
<div class="card-content text-center"> <div class="card-content text-center">
<img src="~/images/admin-vault-edit.svg" class="img-fuild"> <img src="~/images/admin-vault-edit.svg" class="img-fuild">
<p class="number text-center">7</p> <p class="number text-center">7</p>
......
@model List<backstage.Models.Keys.Key> @using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<backstage.Models.Keys.Key>
@{ @{
ViewData["Title"] = "Keys List"; ViewData["Title"] = "Keys List";
} }
...@@ -15,7 +17,7 @@ ...@@ -15,7 +17,7 @@
} }
<div class="page-header"> <div class="page-header">
<h3 class="page-title">Keys List</h3> <h3 class="page-title">@Localizer["Keys List"]</h3>
<input id="msg" hidden value="@TempData["msg"]" /> <input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null) @if (TempData["isSuccess"] != null)
{ {
...@@ -33,8 +35,8 @@ ...@@ -33,8 +35,8 @@
<div class="col-md-12"> <div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo"> <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="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"><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">Keys List</li> <li class="breadcrumb-item active">@Localizer["Keys List"]</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -44,86 +46,101 @@ ...@@ -44,86 +46,101 @@
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<tr> <tr>
<th style=" border-left: solid 0.1px #d9d9d9;">ID</th> <th style=" border-left: solid 0.1px #d9d9d9;">@Localizer["Serial number"]</th>
<th>Name</th> <th>@Localizer["Name"]</th>
<th>Encryption</th> <th>@Localizer["Encryption"]</th>
<th>Last Update</th> <th>@Localizer["Last Update"]</th>
<th>Status</th> <th>@Localizer["Status"]</th>
<th>Expiration</th> <th>@Localizer["Expiration"]</th>
<th>Modify</th> <th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">Delete</th> <th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@if (Model!=null) @if (Model != null)
@if (Model.Count > 0) @if (Model.Count > 0)
{ {
foreach (var k in Model) foreach (var k in Model)
{ {
<tr> <tr>
<td>@k.id</td> <td>@k.id</td>
<td><a asp-action="" title="Enter Application Management">@k.name</a></td> <td><a asp-action="" title="Enter Application Management">@k.name</a></td>
<td>@k.encryption</td> <td>@k.encryption</td>
<td>@k.lastUpdate</td> <td>@k.lastUpdate</td>
<td>@(k.active==1?"In use":"")</td> <td>@(k.active==1?"In use":"")</td>
<td>@k.expiration</td> <td>@k.expiration</td>
<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> <i class="fa-solid fa-pen-to-square"></i>
</a> </a>
</td> </td>
<td> <td>
<a 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>
</td> </td>
</tr> </tr>
} }
} }
</tbody> </tbody>
</table> </table>
<!--End of APIKey管理 table--> <!--End of APIKey管理 table-->
</div>
</div> </div>
</div>
</div>
</div> </div>
</div> </div>
</div> <div class="modal fade " id="deleteProject" role="dialog" tabindex="-1" aria-modal="true" >
<div class="modal-dialog modal-sm modalforMemberGo">
<!-- MODAL --> <!-- Modal content-->
<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-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="myModalLabel">選擇使用者</h5> <h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> @Localizer["Delete key"]
<span aria-hidden="true">&times;</span> </h4>
</button> </div> <!--END of div "modal-header"-->
</div>
<div class="modal-body"> <div class="modal-body" style="padding-top:35px; padding-bottom: 35px">
<select id="selectUser" class="form-control" asp-items="ViewBag.users"> <form>
<p>
@Localizer["Confirm"]?
</p>
<div class="SubmitBlock SubmitBlock_sm">
<button id="confirmBtn" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">@Localizer["Submit"]</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">@Localizer["Cancel"]</button>
</div>
</form>
</div> <!--END of div "modal-body"-->
<!-- 其他用户选项 -->
</select>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button> <!--
</div> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div> -->
</div> </div> <!--END of div "modal-footer"-->
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div> </div>
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> @section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf"> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () { $('document').ready(function () {
var msg = '@TempData["msg"]'; var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]'; var IsSuccess = '@TempData["IsSuccess"]';
...@@ -139,33 +156,50 @@ ...@@ -139,33 +156,50 @@
tooltipClass: "custom-tooltip-width" tooltipClass: "custom-tooltip-width"
}); });
$("#confirmBtn").on("click", function () { var selectKeyId;
// 確認按鈕被點擊時的處理程式碼
// 在這裡呼叫您的 API $('.deleteKeyBtn').click(function (e) {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id'); selectKeyId = parseInt( $(this).data('keyid'));
var field_id = parseInt('@ViewBag.field_id'); console.log('selectKeyId=' + selectKeyId);
var selectedUser = parseInt($("#selectUser").val()); // 替換為您實際使用的選取元素的 ID });
$("#confirmBtn").on("click", function (e) {
// 確認按鈕被點擊時的處理程式碼
e.preventDefault(); // 防止點擊後刷新頁面(如果該鏈接是 <a> 標籤)
var data = {
keyId: selectKeyId
};
console.log('data.keyId=' + data.keyId);
$.ajax({ $.ajax({
url: "/TokenVault/Addusers", url: "/Key/DeleteKey",
method: "POST", type: 'POST', // 或 'GET',根據實際需求
contentType: "application/json", data: data,
data: JSON.stringify({ Merchant_id: merchant_id, vault_id: vault_id, field_id: field_id, user_id: selectedUser}),
success: function (response) { success: function (response) {
// API 呼叫成功的處理程式碼 // API 呼叫成功的處理程式碼
showAlert(response.isSuccess, response.message)
if (response.isSuccess) {
setTimeout(function () {
location.reload();
}, 2000);
}
}, },
error: function (xhr, status, error) { error: function (xhr, status, error) {
// API 呼叫失敗的處理程式碼 // API 呼叫失敗的處理程式碼
showAlert(false, error.responseText)
} }
}); });
}); });
}) })
</script> </script>
} }
\ No newline at end of file \ No newline at end of file
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
<i class="mdi mdi-earth"></i> <i class="mdi mdi-earth"></i>
</a> </a>
<div class="dropdown-menu dropdown-menu-right navbar-dropdown preview-list" aria-labelledby="languageDropdown"> <div class="dropdown-menu dropdown-menu-right navbar-dropdown preview-list" aria-labelledby="languageDropdown">
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="en" asp-route-returnUrl="@Context.Request.Path.Value"> <a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="en"asp-route-returnUrl="@($"{Context.Request.Path.Value}{Context.Request.QueryString}")">
<div class="preview-thumbnail"> <div class="preview-thumbnail">
<div class="preview-icon languageIcon"> <div class="preview-icon languageIcon">
<img src="/images/icon-lan-en-80.jpg"> <img src="/images/icon-lan-en-80.jpg">
...@@ -152,7 +152,7 @@ ...@@ -152,7 +152,7 @@
</div> </div>
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="zh" asp-route-returnUrl="@Context.Request.Path.Value"> <a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="zh" asp-route-returnUrl="@($"{Context.Request.Path.Value}{Context.Request.QueryString}")">
<div class="preview-thumbnail"> <div class="preview-thumbnail">
<div class="preview-icon languageIcon"> <div class="preview-icon languageIcon">
......
...@@ -58,14 +58,14 @@ ...@@ -58,14 +58,14 @@
<table class="table table-striped "> <table class="table table-striped ">
<thead> <thead>
<tr class=""> <tr class="">
<th>Id</th> <th>@Localizer["Serial number"]</th>
<th> @Localizer["Name"]</th> <th> @Localizer["Name"]</th>
<th> @Localizer["Description"]</th> <th> @Localizer["Description"]</th>
<th> @Localizer["Tpyes"]</th> <th> @Localizer["Tpye"]</th>
<th> @Localizer["Creation Date"]</th> <th> @Localizer["Creation Date"]</th>
<th> @Localizer["Status"]</th> <th> @Localizer["Status"]</th>
<th> @Localizer["Management"]</th> <th> @Localizer["Manage"]</th>
<th> @Localizer["Number of data"]</th> <th> @Localizer["Number of codes"]</th>
<th> @Localizer["Number of users"]</th> <th> @Localizer["Number of users"]</th>
</tr> </tr>
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
$.ajax({ $.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑 url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
type: 'POST', // 或 'GET',根據實際需求 type: 'POST', // 或 'GET',根據實際需求
data: { merchantId: selectedOption }, data: JSON.stringify({ merchantId: selectedOption }),
success: function (response) { success: function (response) {
$('#tbody').empty(); $('#tbody').empty();
$('#tbody').append(response); $('#tbody').append(response);
......
@model backstage.Models.TokenVault.FieldsResponse @using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model backstage.Models.TokenVault.FieldsResponse
@{ @{
ViewData["Title"] = "Fields列表管理"; ViewData["Title"] = @Localizer["Field List Management"];
} }
@{ @{
bool isAdmin = User.IsInRole("Admin"); bool isAdmin = User.IsInRole("Admin");
...@@ -36,7 +38,7 @@ ...@@ -36,7 +38,7 @@
</script> </script>
}} }}
<div class="page-header"> <div class="page-header">
<h3 class="page-title">Fields列表管理列表管理</h3> <h3 class="page-title">@Localizer["Field List Management"]</h3>
<input id="msg" hidden value="@TempData["msg"]" /> <input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null) @if (TempData["isSuccess"] != null)
{ {
...@@ -50,27 +52,32 @@ ...@@ -50,27 +52,32 @@
<div class="col-lg-12 grid-margin stretch-card"> <div class="col-lg-12 grid-margin stretch-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
@*路徑列*@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo"> <ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">Token Vault</a></li> <li class="breadcrumb-item active">
<li class="breadcrumb-item ">Fields Data</li> <a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">
@Localizer["Token Vault List"]
</a>
</li>
<li class="breadcrumb-item ">@Localizer["Field List Management"]</li>
</ul> </ul>
</div> </div>
</div> </div>
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between;">
<div style="float: left; width: 50%;"> <div style="float: left; width: 50%;">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail"> <table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail">
<tbody> <tbody>
<tr> <tr>
<th>Token Vault</th> <th>@Localizer["Token Vault"]</th>
<td class="item">ID</td> <td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.VaultInfo.vault_id</td> <td class="content">@ViewBag.VaultInfo.vault_id</td>
<td class="item">Name</td> <td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.VaultInfo.name</td> <td class="content">@ViewBag.VaultInfo.name</td>
</tr> </tr>
</tbody> </tbody>
...@@ -78,7 +85,7 @@ ...@@ -78,7 +85,7 @@
</div> </div>
</div> </div>
<div style="float: right;"> <div style="float: right;">
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">Create</a> <a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">@Localizer["Create"]</a>
</div> </div>
</div> </div>
<div> <div>
...@@ -87,12 +94,12 @@ ...@@ -87,12 +94,12 @@
<table class="table table-striped expense-color"> <table class="table table-striped expense-color">
<thead> <thead>
<tr class="expense-color"> <tr class="expense-color">
<th>ID</th> <th>@Localizer["Serial number"]</th>
<th>Name</th> <th>@Localizer["Name"]</th>
<th>Descryption</th> <th>@Localizer["Description"]</th>
<th>Format</th> <th>@Localizer["Format"]</th>
<th>Enable</th> <th>@Localizer["Enable"]</th>
<th>Management</th> <th>@Localizer["Manage"]</th>
</tr> </tr>
</thead> </thead>
...@@ -111,8 +118,8 @@ ...@@ -111,8 +118,8 @@
<td> <td>
<!-- <button class="btn btnPermission btn-sm" data-toggle="modal" data-target="#permission">資料遮罩</button> --> <!-- <button class="btn btnPermission btn-sm" data-toggle="modal" data-target="#permission">資料遮罩</button> -->
<a class="btn btnPermission btn-sm masksBtn">Data Mask</a> <a class="btn btnPermission btn-sm masksBtn">@Localizer["Data Mask"]</a>
<a class="btn btnPermission btn-sm usersBtn">Users </a> <a class="btn btnPermission btn-sm usersBtn">@Localizer["Users"] </a>
</td> </td>
</tr> </tr>
} }
...@@ -139,34 +146,34 @@ ...@@ -139,34 +146,34 @@
<div class="modal-content"> <div class="modal-content">
<form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off"> <form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div> <div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<h4 class="modal-title">基本資料</h4>
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="form-group">
<input name="merchant_id" value=@ViewBag.Merchant_id hidden /> <input name="merchant_id" value=@ViewBag.Merchant_id hidden />
<input name="vault_id" value=@ViewBag.vault_id hidden /> <input name="vault_id" value=@ViewBag.vault_id hidden />
</div> </div>
<div class="form-group required"> <div class="form-group required">
<label class="control-label">name</label> <label class="control-label">@Localizer["Name"]</label>
<input name="name" type="text" class="form-control" oninput="validateForm()"> <input name="name" type="text" class="form-control" oninput="validateForm()">
<div id="nameError" class="text-danger"></div> <div id="nameError" class="text-danger"></div>
</div> </div>
<div class="form-group required"> <div class="form-group required">
<label class="control-label">desc</label> <label class="control-label">@Localizer["Description"]</label>
<input name="desc" type="text" class="form-control"> <input name="desc" type="text" class="form-control">
</div> </div>
<div class="form-group required"> <div class="form-group required">
<label class="control-label">format_exp</label> <label class="control-label">@Localizer["Format"]</label>
<input name="format_exp" type="text" class="form-control"> <input name="format_exp" type="text" class="form-control">
</div> </div>
<div class="form-group required"> <div class="form-group required">
<label class="control-label">Enabled</label> <label class="control-label">@Localizer["Enable"]</label>
<input name="enabled" type="checkbox" class="form-check-input" checked> <input name="enabled" type="checkbox" class="form-check-input" checked>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>送出</button> <button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>@Localizer["Submit"]</button>
<button type="button" class="btn btn-light" data-dismiss="modal">取消</button> <button type="button" class="btn btn-light" data-dismiss="modal">@Localizer["Cancel"]</button>
</div> </div>
</form> </form>
</div> </div>
......
@model List<backstage.Models.TokenVault.Mask> @using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<backstage.Models.TokenVault.Mask>
@{ @{
ViewData["Title"] = "Mask列表管理"; ViewData["Title"] = "Mask列表管理";
} }
...@@ -25,9 +28,9 @@ ...@@ -25,9 +28,9 @@
@*路徑列*@ @*路徑列*@
<div class="col-md-12"> <div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo"> <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="List" asp-route-merchantId="@ViewBag.Merchant_id"> @Localizer["Token Vault List"]</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"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">@Localizer["Field List Management"]</a></li>
<li class="breadcrumb-item ">資料遮罩</li> <li class="breadcrumb-item ">@Localizer["Data mask"]</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -40,17 +43,17 @@ ...@@ -40,17 +43,17 @@
</thead> --> </thead> -->
<tbody> <tbody>
<tr> <tr>
<th>保險庫</th> <th>@Localizer["Vault"]</th>
<td class="item">ID</td> <td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.vault_id</td> <td class="content">@ViewBag.vault_id</td>
<td class="item">名稱</td> <td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.VaultName</td> <td class="content">@ViewBag.VaultName</td>
</tr> </tr>
<tr> <tr>
<th>欄位</th> <th>@Localizer["Field"]</th>
<td class="item">ID</td> <td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.field_id</td> <td class="content">@ViewBag.field_id</td>
<td class="item">名稱</td> <td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.FieldName</td> <td class="content">@ViewBag.FieldName</td>
</tr> </tr>
...@@ -60,27 +63,27 @@ ...@@ -60,27 +63,27 @@
</table> </table>
<div class="newBlock"> <div class="newBlock">
@*<button type="button" class="btn btn-mainblue-hollow" onclick="window.location.href='tokenVault_fields.html'"><img src="images/memberGo/apiKey/back_o_icons8-undo-90.png">返回</button>*@ @*<button type="button" class="btn btn-mainblue-hollow" onclick="window.location.href='tokenVault_fields.html'"><img src="images/memberGo/apiKey/back_o_icons8-undo-90.png">返回</button>*@
<button id="NewMaskBtn" type="button" class="btn btn-mainblue-solid @disabledClass" data-toggle="modal" data-target="#new-field-mask"><img src="~/images/memberGo/add.png">新增遮罩</button> <button id="NewMaskBtn" type="button" class="btn btn-mainblue-solid @disabledClass" data-toggle="modal" data-target="#new-field-mask"><img src="~/images/memberGo/add.png">@Localizer["Add mask"]</button>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered" id="memberGoTbl_masksList"> <table class="table table-striped table-hover0 table-bordered" id="memberGoTbl_masksList">
<thead> <thead>
<tr> <tr>
<th colspan="9">資料遮罩列表</th> <th colspan="9">@Localizer["Name"]資料遮罩列表</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<th style=" border-left: solid 1px #d9d9d9;">ID</th> <th style=" border-left: solid 1px #d9d9d9;">ID</th>
<th>名稱</th> <th>@Localizer["Name"]</th>
<th>種類</th> <th>@Localizer["Type"]</th>
<th>遮罩</th> <th>@Localizer["Mask"]</th>
<th>唯一值</th> <th>@Localizer["Is it a unique value"]</th>
<th>設定</th> <th>@Localizer["Set up"]</th>
<th>修改</th> <th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">刪除</th> <th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr> </tr>
@if (Model.Count > 0) @if (Model.Count > 0)
......
@model List<backstage.Models.Users.User> @using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<backstage.Models.Users.User>
@{ @{
ViewData["Title"] = "欄位Users列表管理"; ViewData["Title"] = "欄位Users列表管理";
} }
...@@ -10,7 +12,7 @@ ...@@ -10,7 +12,7 @@
@section header{ @section header{
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
} }
...@@ -28,35 +30,35 @@ ...@@ -28,35 +30,35 @@
<div class="col-lg-12 grid-margin stretch-card"> <div class="col-lg-12 grid-margin stretch-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
@*路徑列*@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo"> <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="List" asp-route-merchantId="@ViewBag.Merchant_id">@Localizer["Token Vault List"]</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"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">@Localizer["Field List Management"]</a></li>
<li class="breadcrumb-item active">使用者</li> <li class="breadcrumb-item active">@Localizer["Users"]</li>
</ul> </ul>
</div> </div>
</div> </div>
<div> <div>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">Add User</a> <a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">@Localizer["Add User"]</a>
<div class="rank-table"> <div class="rank-table">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped expense-color"> <table class="table table-striped expense-color">
<thead> <thead>
<tr class="expense-color"> <tr class="expense-color">
<th>編號</th> <th>@Localizer["Serial number"]</th>
<th>名稱</th> <th>@Localizer["Name"]</th>
<th>username</th> <th>@Localizer["Username"]</th>
<th>遮罩</th> <th>@Localizer["Mask"]</th>
<th>允許解密</th> <th>@Localizer["Allow decryption"]</th>
<th>允許新增</th> <th>@Localizer["Allow to add"]</th>
<th>允許更新</th> <th>@Localizer["Allow update"]</th>
<th>允許刪除</th> <th>@Localizer["Allow delete"]</th>
<th>預設遮罩ID</th> <th>@Localizer["Default Mask ID"]</th>
<th>管理</th> <th>@Localizer["Manage"]</th>
</tr> </tr>
</thead> </thead>
<tbody id="tbody"> <tbody id="tbody">
...@@ -64,36 +66,36 @@ ...@@ -64,36 +66,36 @@
{ {
@foreach (var i in Model) @foreach (var i in Model)
{ {
<tr id="@i.id" class="expense-color"> <tr id="@i.id" class="expense-color">
<td>@i.id</td> <td>@i.id</td>
<td>@i.name</td> <td>@i.name</td>
<td>@i.username</td> <td>@i.username</td>
<td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td> <td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td> <td>
@if (i.allow_decrypt == 1) @if (i.allow_decrypt == 1)
{<span>&#x2714;</span>} {<span>&#x2714;</span>}
</td> </td>
<td> <td>
@if (i.allow_new == 1) @if (i.allow_new == 1)
{<span>&#x2714;</span>} {<span>&#x2714;</span>}
</td> </td>
<td> <td>
@if (i.allow_update == 1) @if (i.allow_update == 1)
{<span>&#x2714;</span>} {<span>&#x2714;</span>}
</td> </td>
<td> <td>
@if (i.allow_del == 1) @if (i.allow_del == 1)
{<span>&#x2714;</span>} {<span>&#x2714;</span>}
</td> </td>
<td>@i.default_mask_id</td> <td>@i.default_mask_id</td>
<td> <td>
<a class="btn btnPermission btn-sm">移除使用者</a> <a class="btn btnPermission btn-sm">@Localizer["Remove User"]</a>
</td> </td>
</tr> </tr>
} }
} }
...@@ -117,7 +119,7 @@ ...@@ -117,7 +119,7 @@
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="myModalLabel">選擇使用者</h5> <h5 class="modal-title" id="myModalLabel">@Localizer["Select user"]</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
...@@ -129,7 +131,7 @@ ...@@ -129,7 +131,7 @@
</select> </select>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button> <button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">@Localizer["Confirm"]</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -169,7 +171,7 @@ ...@@ -169,7 +171,7 @@
success: function (response) { success: function (response) {
showAlert(response.isSuccess, response.message); showAlert(response.isSuccess, response.message);
if (response.isSuccess) { if (response.isSuccess) {
setTimeout(function () { setTimeout(function () {
location.reload(); location.reload();
}, 2000); }, 2000);
......
...@@ -21,19 +21,19 @@ ...@@ -21,19 +21,19 @@
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title"> @Localizer["Create Department"]</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off"> <form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div> <div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">@Localizer["Basic"]</p> <p class="form-title card-description">@Localizer["Basic"]</p>
<div class="row"> <div class="row">
<div class="col-md-4 form-group required"> <div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for="">@Localizer["name"]</label> <label asp-for="name" class="col-form-label" for="">@Localizer["Name"]</label>
<input asp-for="name" type="text" class="form-control" id=""> <input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span> <span asp-validation-for="name" class="text-danger"></span>
</div> </div>
<div class="col-md-4 form-group "> <div class="col-md-4 form-group ">
<label asp-for="phone" class="col-form-label" for="phone">@Localizer["phone"]</label> <label asp-for="phone" class="col-form-label" for="phone">@Localizer["Phone"]</label>
<input asp-for="phone" class="form-control" id="phone"> <input asp-for="phone" class="form-control" id="phone">
<span asp-validation-for="phone" class="text-danger"></span> <span asp-validation-for="phone" class="text-danger"></span>
</div> </div>
......
...@@ -26,17 +26,17 @@ ...@@ -26,17 +26,17 @@
<table class="table table-striped "> <table class="table table-striped ">
<thead> <thead>
<tr> <tr>
<th>@Localizer["merchant_id"]</th> <th>@Localizer["Department ID"]</th>
<th>@Localizer["name"]</th> <th>@Localizer["Name"]</th>
@*<th>address</th> @*<th>address</th>
<th>country_id</th> <th>country_id</th>
<th>postcode</th>*@ <th>postcode</th>*@
<th>@Localizer["phone"]</th> <th>@Localizer["Phone"]</th>
@*<th>fax</th>*@ @*<th>fax</th>*@
@*<th>vatid</th>*@ @*<th>vatid</th>*@
@*<th>enabled</th>*@ @*<th>enabled</th>*@
<th>@Localizer["creation_date"]</th> <th>@Localizer["Creation Date"]</th>
@*<th>vatid_verify</th> @*<th>vatid_verify</th>
<th>deposit_book_verify</th> <th>deposit_book_verify</th>
<th>user_natid_verify</th> <th>user_natid_verify</th>
......
...@@ -19338,4 +19338,7 @@ tbody { ...@@ -19338,4 +19338,7 @@ tbody {
} }
.custom-tooltip { .custom-tooltip {
cursor: pointer !important; cursor: pointer !important;
}
.deleteKeyBtn, .reviseKeyBtn {
cursor: pointer;
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment