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

update

parent 947640ad
......@@ -12,6 +12,11 @@ using backstage.Models.Keys;
using System.Net.Http;
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
{
......@@ -23,14 +28,22 @@ namespace backstage.Controllers
private readonly IConfiguration _config;
private readonly ICallApi _callApi;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IStringLocalizer<UserController> _localizer;
private readonly string _currentLanguage;
/// <summary>
/// 讀取組態用
/// </summary>
public KeyController(IConfiguration config, ICallApi callApi)
public KeyController(IConfiguration config, ICallApi callApi, IHttpContextAccessor httpContextAccessor, IStringLocalizer<UserController> localizer)
{
_config = config;
_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
var url = _config["IP"] + "/security/key/list";
var httpMethod = HttpMethod.Post;
var parameters = new Dictionary<string, string>
{
};
{
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
......@@ -68,7 +81,7 @@ namespace backstage.Controllers
catch (Exception e)
{
TempData["IsSuccess"] = false;
TempData["msg"] = e.Message+e.InnerException?.Message;
TempData["msg"] = e.Message + e.InnerException?.Message;
return View();
}
......@@ -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
//刪除MASK ajax
[Authorize(Policy = "AdminOnly")]
[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();
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 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Number of data" xml:space="preserve">
<value>資料數量</value>
</data>
<data name="Number of data modifications this month" xml:space="preserve">
<value>本月資料修改數量</value>
<data name="Modify the number of Token Vault Entry this month" xml:space="preserve">
<value>本月修改代碼化保險庫入口數量</value>
</data>
<data name="Number of departments" xml:space="preserve">
<value>部門數量</value>
</data>
<data name="Number of new data this month" xml:space="preserve">
<value>本月新資料數量</value>
<data name="Number of new Token Vault Entry added this month" xml:space="preserve">
<value>本月新增代碼化保險庫入口數量</value>
</data>
<data name="Number of Token Vaults" xml:space="preserve">
<value>Token Vault數量</value>
......@@ -135,4 +132,7 @@
<data name="Statistic" xml:space="preserve">
<value>數據統計</value>
</data>
<data name="Total number of Token Vault Entry" 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="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 @@
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Management" xml:space="preserve">
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of data" xml:space="preserve">
<value>資料數量</value>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>Token Vault列表管理</value>
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpyes" xml:space="preserve">
<data name="Tpye" 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="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 @@
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="creation_date" xml:space="preserve">
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve">
<value>部門列表</value>
</data>
<data name="merchant_id" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="phone" xml:space="preserve">
<data name="Phone" xml:space="preserve">
<value>電話</value>
</data>
<data name="submit" xml:space="preserve">
<data name="Submit" xml:space="preserve">
<value>送出</value>
</data>
<data name="username" xml:space="preserve">
<data name="Username" xml:space="preserve">
<value>使用者名稱</value>
</data>
</root>
\ No newline at end of file
......@@ -123,22 +123,22 @@
<data name="Create" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="creation_date" xml:space="preserve">
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve">
<value>部門列表</value>
</data>
<data name="merchant_id" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="phone" xml:space="preserve">
<data name="Phone" xml:space="preserve">
<value>電話</value>
</data>
<data name="username" xml:space="preserve">
<data name="Username" xml:space="preserve">
<value>使用者名稱</value>
</data>
</root>
\ No newline at end of file
......@@ -124,13 +124,13 @@
<value>Admin數量</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增</value>
<value>新增使用者</value>
</data>
<data name="creation_date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Email" xml:space="preserve">
<value>電子郵件</value>
<value>電子信箱</value>
</data>
<data name="enabled" xml:space="preserve">
<value>啟用</value>
......
......@@ -44,7 +44,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<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">
<img src="~/images/admin-vault-data.svg" class="img-fuild">
<p class="number text-center">200</p>
......@@ -56,7 +56,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<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">
<img src="~/images/admin-vault-add.svg" class="img-fuild">
<p class="number text-center">10</p>
......@@ -68,7 +68,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<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">
<img src="~/images/admin-vault-edit.svg" class="img-fuild">
<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";
}
......@@ -15,7 +17,7 @@
}
<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"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -33,8 +35,8 @@
<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">Keys List</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">@Localizer["Keys List"]</li>
</ul>
</div>
</div>
......@@ -44,86 +46,101 @@
<table class="table table-striped">
<thead>
<tr>
<th style=" border-left: solid 0.1px #d9d9d9;">ID</th>
<th>Name</th>
<th>Encryption</th>
<th>Last Update</th>
<th>Status</th>
<th>Expiration</th>
<th>Modify</th>
<th style=" border-right: solid 0.1px #d9d9d9;">Delete</th>
<th style=" border-left: solid 0.1px #d9d9d9;">@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Encryption"]</th>
<th>@Localizer["Last Update"]</th>
<th>@Localizer["Status"]</th>
<th>@Localizer["Expiration"]</th>
<th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr>
</thead>
<tbody>
@if (Model!=null)
@if (Model.Count > 0)
@if (Model != null)
@if (Model.Count > 0)
{
foreach (var k in Model)
{
<tr>
<td>@k.id</td>
<td><a asp-action="" title="Enter Application Management">@k.name</a></td>
<td>@k.encryption</td>
<td>@k.lastUpdate</td>
<td>@(k.active==1?"In use":"")</td>
<td>@k.expiration</td>
<td>
<a data-toggle="modal" data-target="#editProject" title="Modify">
<i class="fa-solid fa-pen-to-square"></i>
</a>
</td>
<td>
<a data-toggle="modal" data-target="#deleteProject" title="Delete">
<i class="fa-solid fa-trash-can"></i>
</a>
</td>
</tr>
<tr>
<td>@k.id</td>
<td><a asp-action="" title="Enter Application Management">@k.name</a></td>
<td>@k.encryption</td>
<td>@k.lastUpdate</td>
<td>@(k.active==1?"In use":"")</td>
<td>@k.expiration</td>
<td>
<a class="reviseKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#editProject" title="Revise">
<i class="fa-solid fa-pen-to-square"></i>
</a>
</td>
<td>
<a class="deleteKeyBtn" data-keyId="@k.id" data-toggle="modal" data-target="#deleteProject" title="Delete">
<i class="fa-solid fa-trash-can"></i>
</a>
</td>
</tr>
}
}
</tbody>
</table>
<!--End of APIKey管理 table-->
</tbody>
</table>
<!--End of APIKey管理 table-->
</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 -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<!-- Modal content-->
<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">&times;</span>
</button>
</div>
<div class="modal-body">
<select id="selectUser" class="form-control" asp-items="ViewBag.users">
<h4>
@Localizer["Delete key"]
</h4>
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px; padding-bottom: 35px">
<form>
<p>
@Localizer["Confirm"]?
</p>
<div class="SubmitBlock SubmitBlock_sm">
<button 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">
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button>
</div>
</div>
</div>
<!--
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-->
</div> <!--END of div "modal-footer"-->
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div>
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
......@@ -139,33 +156,50 @@
tooltipClass: "custom-tooltip-width"
});
$("#confirmBtn").on("click", function () {
// 確認按鈕被點擊時的處理程式碼
// 在這裡呼叫您的 API
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt('@ViewBag.field_id');
var selectedUser = parseInt($("#selectUser").val()); // 替換為您實際使用的選取元素的 ID
var selectKeyId;
$('.deleteKeyBtn').click(function (e) {
selectKeyId = parseInt( $(this).data('keyid'));
console.log('selectKeyId=' + selectKeyId);
});
$("#confirmBtn").on("click", function (e) {
// 確認按鈕被點擊時的處理程式碼
e.preventDefault(); // 防止點擊後刷新頁面(如果該鏈接是 <a> 標籤)
var data = {
keyId: selectKeyId
};
console.log('data.keyId=' + data.keyId);
$.ajax({
url: "/TokenVault/Addusers",
method: "POST",
contentType: "application/json",
data: JSON.stringify({ Merchant_id: merchant_id, vault_id: vault_id, field_id: field_id, user_id: selectedUser}),
url: "/Key/DeleteKey",
type: 'POST', // 或 'GET',根據實際需求
data: data,
success: function (response) {
// API 呼叫成功的處理程式碼
showAlert(response.isSuccess, response.message)
if (response.isSuccess) {
setTimeout(function () {
location.reload();
}, 2000);
}
},
error: function (xhr, status, error) {
// API 呼叫失敗的處理程式碼
showAlert(false, error.responseText)
}
});
});
})
</script>
}
\ No newline at end of file
</script>
}
\ No newline at end of file
......@@ -141,7 +141,7 @@
<i class="mdi mdi-earth"></i>
</a>
<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-icon languageIcon">
<img src="/images/icon-lan-en-80.jpg">
......@@ -152,7 +152,7 @@
</div>
</a>
<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-icon languageIcon">
......
......@@ -58,14 +58,14 @@
<table class="table table-striped ">
<thead>
<tr class="">
<th>Id</th>
<th>@Localizer["Serial number"]</th>
<th> @Localizer["Name"]</th>
<th> @Localizer["Description"]</th>
<th> @Localizer["Tpyes"]</th>
<th> @Localizer["Tpye"]</th>
<th> @Localizer["Creation Date"]</th>
<th> @Localizer["Status"]</th>
<th> @Localizer["Management"]</th>
<th> @Localizer["Number of data"]</th>
<th> @Localizer["Manage"]</th>
<th> @Localizer["Number of codes"]</th>
<th> @Localizer["Number of users"]</th>
</tr>
......@@ -162,7 +162,7 @@
$.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
type: 'POST', // 或 'GET',根據實際需求
data: { merchantId: selectedOption },
data: JSON.stringify({ merchantId: selectedOption }),
success: function (response) {
$('#tbody').empty();
$('#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");
......@@ -36,7 +38,7 @@
</script>
}}
<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"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -50,27 +52,32 @@
<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">Token Vault</a></li>
<li class="breadcrumb-item ">Fields Data</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 ">@Localizer["Field List Management"]</li>
</ul>
</div>
</div>
<div style="display: flex; justify-content: space-between;">
<div style="float: left; width: 50%;">
<div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail">
<tbody>
<tr>
<th>Token Vault</th>
<td class="item">ID</td>
<th>@Localizer["Token Vault"]</th>
<td class="item">@Localizer["Serial number"]</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>
</tr>
</tbody>
......@@ -78,7 +85,7 @@
</div>
</div>
<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>
......@@ -87,12 +94,12 @@
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>ID</th>
<th>Name</th>
<th>Descryption</th>
<th>Format</th>
<th>Enable</th>
<th>Management</th>
<th>@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Description"]</th>
<th>@Localizer["Format"]</th>
<th>@Localizer["Enable"]</th>
<th>@Localizer["Manage"]</th>
</tr>
</thead>
......@@ -111,8 +118,8 @@
<td>
<!-- <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 usersBtn">Users </a>
<a class="btn btnPermission btn-sm masksBtn">@Localizer["Data Mask"]</a>
<a class="btn btnPermission btn-sm usersBtn">@Localizer["Users"] </a>
</td>
</tr>
}
......@@ -139,34 +146,34 @@
<div class="modal-content">
<form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<h4 class="modal-title">基本資料</h4>
<div class="modal-body">
<div class="form-group">
<input name="merchant_id" value=@ViewBag.Merchant_id hidden />
<input name="vault_id" value=@ViewBag.vault_id hidden />
</div>
<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()">
<div id="nameError" class="text-danger"></div>
</div>
<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">
</div>
<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">
</div>
<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>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>送出</button>
<button type="button" class="btn btn-light" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>@Localizer["Submit"]</button>
<button type="button" class="btn btn-light" data-dismiss="modal">@Localizer["Cancel"]</button>
</div>
</form>
</div>
......
@model List<backstage.Models.TokenVault.Mask>
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<backstage.Models.TokenVault.Mask>
@{
ViewData["Title"] = "Mask列表管理";
}
......@@ -25,9 +28,9 @@
@*路徑列*@
<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 ">資料遮罩</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">@Localizer["Field List Management"]</a></li>
<li class="breadcrumb-item ">@Localizer["Data mask"]</li>
</ul>
</div>
</div>
......@@ -40,17 +43,17 @@
</thead> -->
<tbody>
<tr>
<th>保險庫</th>
<td class="item">ID</td>
<th>@Localizer["Vault"]</th>
<td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.vault_id</td>
<td class="item">名稱</td>
<td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.VaultName</td>
</tr>
<tr>
<th>欄位</th>
<td class="item">ID</td>
<th>@Localizer["Field"]</th>
<td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.field_id</td>
<td class="item">名稱</td>
<td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.FieldName</td>
</tr>
......@@ -60,27 +63,27 @@
</table>
<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 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 class="table-responsive">
<table class="table table-striped table-hover0 table-bordered" id="memberGoTbl_masksList">
<thead>
<tr>
<th colspan="9">資料遮罩列表</th>
<th colspan="9">@Localizer["Name"]資料遮罩列表</th>
</tr>
</thead>
<tbody>
<tr>
<th style=" border-left: solid 1px #d9d9d9;">ID</th>
<th>名稱</th>
<th>種類</th>
<th>遮罩</th>
<th>唯一值</th>
<th>設定</th>
<th>修改</th>
<th style=" border-right: solid 0.1px #d9d9d9;">刪除</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Type"]</th>
<th>@Localizer["Mask"]</th>
<th>@Localizer["Is it a unique value"]</th>
<th>@Localizer["Set up"]</th>
<th>@Localizer["Revise"]</th>
<th style=" border-right: solid 0.1px #d9d9d9;">@Localizer["Delete"]</th>
</tr>
@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列表管理";
}
......@@ -10,7 +12,7 @@
@section header{
<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/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 @@
<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>
<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">@Localizer["Field List Management"]</a></li>
<li class="breadcrumb-item active">@Localizer["Users"]</li>
</ul>
</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="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>
<th>@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Username"]</th>
<th>@Localizer["Mask"]</th>
<th>@Localizer["Allow decryption"]</th>
<th>@Localizer["Allow to add"]</th>
<th>@Localizer["Allow update"]</th>
<th>@Localizer["Allow delete"]</th>
<th>@Localizer["Default Mask ID"]</th>
<th>@Localizer["Manage"]</th>
</tr>
</thead>
<tbody id="tbody">
......@@ -64,36 +66,36 @@
{
@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 class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td>
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_del == 1)
{<span>&#x2714;</span>}
</td>
<td>@i.default_mask_id</td>
<td>
<a class="btn btnPermission btn-sm">移除使用者</a>
</td>
</tr>
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td>
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_del == 1)
{<span>&#x2714;</span>}
</td>
<td>@i.default_mask_id</td>
<td>
<a class="btn btnPermission btn-sm">@Localizer["Remove User"]</a>
</td>
</tr>
}
}
......@@ -117,7 +119,7 @@
<div class="modal-dialog" role="document">
<div class="modal-content">
<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">
<span aria-hidden="true">&times;</span>
</button>
......@@ -129,7 +131,7 @@
</select>
</div>
<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>
......@@ -169,7 +171,7 @@
success: function (response) {
showAlert(response.isSuccess, response.message);
if (response.isSuccess) {
setTimeout(function () {
location.reload();
}, 2000);
......
......@@ -21,19 +21,19 @@
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title"> @Localizer["Create Department"]</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">@Localizer["Basic"]</p>
<div class="row">
<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="">
<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">@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">
<span asp-validation-for="phone" class="text-danger"></span>
</div>
......
......@@ -26,17 +26,17 @@
<table class="table table-striped ">
<thead>
<tr>
<th>@Localizer["merchant_id"]</th>
<th>@Localizer["name"]</th>
<th>@Localizer["Department ID"]</th>
<th>@Localizer["Name"]</th>
@*<th>address</th>
<th>country_id</th>
<th>postcode</th>*@
<th>@Localizer["phone"]</th>
<th>@Localizer["Phone"]</th>
@*<th>fax</th>*@
@*<th>vatid</th>*@
@*<th>enabled</th>*@
<th>@Localizer["creation_date"]</th>
<th>@Localizer["Creation Date"]</th>
@*<th>vatid_verify</th>
<th>deposit_book_verify</th>
<th>user_natid_verify</th>
......
......@@ -19338,4 +19338,7 @@ tbody {
}
.custom-tooltip {
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