Initial commit

This commit is contained in:
Marek Lesko
2025-08-19 16:58:51 +02:00
commit a2f7e2285a
908 changed files with 160315 additions and 0 deletions

12
.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
.vs
.vsCode
bin
obj
*.vssscc
*.vspscc
*.user
*.jfm
*.dbmdl
.DS_Store
launchSettings.json
*.tmp

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,132 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@using System.Text.Json
@using System.Text.Json.Nodes
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
var makeAssertionsOptionsUrl = Url.Action("MakeAssertionOptions", "Authenticate", new { area = "mobile" });
var authenticateUrl = Url.Action("Index", "Authenticate", new { area = "mobile" });
var jsonObj = JsonSerializer.Deserialize<JsonObject>(Model.Input.ToString());
var beginLoginUrl = Model.Input["BeginLoginUrl"].ToString();
var loginStatusUrl = Model.Input["LoginStatusUrl"].ToString();
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}
@section Scripts {
<script type="text/javascript">
let csharpReference;
var isInitialized = false;
var init = function() {
var beginLoginUrl = "@beginLoginUrl";
var loginStatusUrl = "@loginStatusUrl";
var displayError = function (errorJson) {
csharpReference.invokeMethodAsync("SetErrorMessage", errorJson["error_description"]);
}
var displayQRCode = function (img) {
$("#generateQrCodeForm").css("display", "none");
$("#qrCodeContainer").css("display", "");
$("#qrCodeContainer img").attr("src", img);
}
async function checkStatus(sessionId) {
setTimeout(async function () {
let response = await fetch(loginStatusUrl + "/" + sessionId, {
method: 'GET'
});
if (!response.ok) {
let responseJson = await response.json();
displayError(responseJson);
await checkStatus(sessionId);
} else {
$("#generateQrCodeForm").unbind("submit");
$("#generateQrCodeForm input[name='Login']").removeAttr('disabled');
$("#generateQrCodeForm input[name='SessionId']").val(sessionId);
$("#generateQrCodeForm").trigger("submit");
}
}, 1000);
}
async function makeAssertionOptions(form) {
let response = await fetch(beginLoginUrl, {
method: 'POST',
body: JSON.stringify({ login: form.Login, credential_type: 'mobile' }),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
if (!response.ok) {
const json = await response.json();
displayError(json);
return;
}
const sessionId = response.headers.get('SessionId');
const qrCode = response.headers.get('QRCode');
const blob = await response.blob();
const img = URL.createObjectURL(blob);
displayQRCode(img);
await checkStatus(sessionId);
}
var tryListenForm = function () {
const elt = $("#generateQrCodeForm");
if (isInitialized === true) return;
if (elt.length === 0) {
setTimeout(() => tryListenForm(), 500);
return;
}
isInitialized = true;
elt.submit(function (e) {
e.preventDefault();
makeAssertionOptions(convertFormToJSON($(e.target)));
});
}
tryListenForm();
}
setCsharpReference = function (ref) {
csharpReference = ref;
init();
};
</script>
}

View File

@@ -0,0 +1,144 @@
@using FormBuilder.Components.Workflow
@using FormBuilder
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options;
@using SimpleIdServer.IdServer.Options;
@using System.Text.Json
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
var beginRegisterUrl = Model.Input["BeginRegisterUrl"].ToString();
var registerStatusUrl = Model.Input["RegisterStatusUrl"].ToString();
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}
@section Scripts {
<script type="text/javascript">
let csharpReference;
var init = function() {
var beginRegisterUrl = "@beginRegisterUrl";
var registerStatusUrl = "@registerStatusUrl";
var isCreated = "IsCreated";
var isInitialized = false;
var displayError = function(errorJson) {
csharpReference.invokeMethodAsync("SetErrorMessage", errorJson["error_description"]);
}
var displaySuccessMessage = function () {
csharpReference.invokeMethodAsync("SetSuccessMessage", "User is created");
csharpReference.invokeMethodAsync("ClearErrorMessages");
csharpReference.invokeMethodAsync("SetInputData", isCreated, "true");
$("#generateQrCodeForm").attr("style", "display: none !important");
$("#qrCodeContainer").attr("style", "display: none !important");
}
var displayQRCode = function (img, qrCode) {
$("#generateQrCodeForm").attr("style", "display: none !important");
$("#qrCodeContainer").css("display", "");
$("#qrCodeContainer img").attr("src", img);
}
async function checkStatus(sessionId, nextRegistrationRedirectUrl) {
setTimeout(async function(){
let response = await fetch(registerStatusUrl + "/" + sessionId, {
method: 'GET'
});
if (!response.ok) {
let responseJson = await response.json();
displayError(responseJson);
await checkStatus(sessionId, nextRegistrationRedirectUrl);
return;
}
if(nextRegistrationRedirectUrl) {
window.location.href = nextRegistrationRedirectUrl;
} else {
displaySuccessMessage();
}
}, 1000);
}
async function makeCredential(login, displayName, form) {
let response = await fetch(beginRegisterUrl, {
method: 'POST',
body: JSON.stringify({ login: login, display_name: displayName, credential_type: 'mobile' }),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
if (!response.ok) {
let responseJson = await response.json();
displayError(responseJson);
return;
}
const sessionId = response.headers.get('SessionId');
const qrCode = response.headers.get('QRCode');
let nextRegistrationRedirectUrl = response.headers.get('NextRegistrationRedirectUrl');
const blob = await response.blob();
const img = URL.createObjectURL(blob);
displayQRCode(img, qrCode);
await checkStatus(sessionId, nextRegistrationRedirectUrl);
};
var tryListenForm = function () {
const elt = $("#generateQrCodeForm");
if (isInitialized === true) return;
if (elt.length === 0) {
setTimeout(() => tryListenForm(), 500);
return;
}
isInitialized = true;
elt.submit(function (e) {
e.preventDefault();
var login = $("#generateQrCodeForm input[name='Login']").val();
var displayName = $("#generateQrCodeForm input[name='DisplayName']").val();
makeCredential(login, displayName, convertFormToJSON($(e.target)));
});
}
tryListenForm();
};
setCsharpReference = function (ref) {
csharpReference = ref;
init();
};
</script>
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1,40 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,154 @@
@using FormBuilder.Components.Workflow
@using FormBuilder
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options;
@using SimpleIdServer.IdServer.Options;
@using System.Text.Json
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
var qrCodeUrl = Model.Input["QrCodeUrl"].ToString();
var statusUrl = Model.Input["StatusUrl"].ToString();
var endRegisterUrl = Model.Input["EndRegisterUrl"].ToString();
var isCreated = Model.Input["IsCreated"].ToString();
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}
@section Scripts {
<script type="text/javascript">
let csharpReference;
var isInitialized = false;
var init = function () {
var getQrCodeUrl = "@qrCodeUrl";
var statusUrl = "@statusUrl";
var endRegisterURL = "@endRegisterUrl";
var isCreated = "@isCreated";
var displayError = function (errorJson) {
csharpReference.invokeMethodAsync("SetErrorMessage", errorJson["error_description"]);
}
var viewQrCode = function (img) {
$("#generateQrCodeForm").attr("style", "display: none !important");
$("#qrCodeContainer").css("display", "");
$("#qrCodeContainer img").attr("src", img);
}
var displaySuccessMessage = function () {
csharpReference.invokeMethodAsync("SetSuccessMessage", "User is created");
csharpReference.invokeMethodAsync("ClearErrorMessages");
csharpReference.invokeMethodAsync("SetInputData", isCreated, "true");
$("#generateQrCodeForm").attr("style", "display: none !important");
$("#qrCodeContainer").attr("style", "display: none !important");
}
async function register(state) {
let response = await fetch(endRegisterURL, {
method: 'POST',
body: JSON.stringify({
state: state
}),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
let responseJson = await response.json();
if (!responseJson.next_registration_url) {
displaySuccessMessage();
} else {
window.location.href = responseJson.next_registration_url;
}
}
async function checkStatus(state) {
setTimeout(async function () {
let response = await fetch(statusUrl + "/" + state, {
method: 'GET'
});
if (!response.ok) {
let responseJson = await response.json();
displayError(responseJson);
await checkStatus(state);
return;
}
register(state);
}, 1000);
}
async function displayQrCode(id) {
let response = await fetch(getQrCodeUrl + "/" + id, {
method: 'GET'
});
if (!response.ok) {
const json = await response.json();
displayError(json);
return;
}
const state = response.headers.get('state');
const blob = await response.blob();
const img = URL.createObjectURL(blob);
viewQrCode(img);
await checkStatus(state);
}
var tryListenForm = function () {
const elt = $(".vpRegister");
if (isInitialized === true) return;
if (elt.length === 0) {
setTimeout(() => tryListenForm(), 500);
return;
}
isInitialized = true;
elt.submit(function (e) {
e.preventDefault();
var id = $(e.target).serializeArray()[0].value;
displayQrCode(id);
});
}
tryListenForm();
}
setCsharpReference = function (ref) {
csharpReference = ref;
init();
};
</script>
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View File

@@ -0,0 +1,166 @@
@using FormBuilder
@using FormBuilder.Components.Workflow
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options
@using System.Text.Json
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
var makeAssertionsOptionsUrl = Url.Action("MakeAssertionOptions", "Authenticate", new { area = "webauthn" });
var authenticateUrl = Url.Action("Index", "Authenticate", new { area = "webauthn" });
var beginLoginUrl = Model.Input["BeginLoginUrl"].ToString();
var endLoginUrl = Model.Input["EndLoginUrl"].ToString();
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}
@section Scripts {
<script type="text/javascript">
let csharpReference;
var init = function () {
var beginLoginUrl = "@beginLoginUrl";
var endLoginUrl = "@endLoginUrl";
var makeAssertionsUrl = "@makeAssertionsOptionsUrl";
var authenticateUrl = "@authenticateUrl";
var isInitialized = false;
var toggleBtn = function (isDisabled) {
$("#fido2Auth button[type='submit']").attr('disabled', isDisabled);
}
var displayError = function (errorJson) {
csharpReference.invokeMethodAsync("SetErrorMessage", errorJson["error_description"]);
}
var tryListenForm = function () {
const elt = $("#webauthForm");
if (isInitialized === true) return;
if (elt.length === 0) {
setTimeout(() => tryListenForm(), 500);
return;
}
isInitialized = true;
elt.submit(function (e) {
e.preventDefault();
makeAssertionOptions(convertFormToJSON($(e.target)));
});
}
async function makeAssertion(credential, form, sessionId) {
let authData = new Uint8Array(credential.response.authenticatorData);
let clientDataJSON = new Uint8Array(credential.response.clientDataJSON);
let rawId = new Uint8Array(credential.rawId);
let sig = new Uint8Array(credential.response.signature);
const assertion = {
id: credential.id,
rawId: coerceToBase64Url(rawId),
type: credential.type,
extensions: credential.getClientExtensionResults(),
response: {
authenticatorData: coerceToBase64Url(authData),
clientDataJSON: coerceToBase64Url(clientDataJSON),
signature: coerceToBase64Url(sig)
}
};
let response = await fetch(endLoginUrl, {
method: 'POST',
body: JSON.stringify({ login: form.Login, session_id: sessionId, assertion: assertion }),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
if (!response.ok) {
const json = await response.json();
toggleBtn(false);
displayError(json);
return;
}
$("#webauthForm").unbind("submit");
$("#webauthForm input[name='SessionId']").val(sessionId);
$("#webauthForm input[name='Login']").removeAttr('disabled');
$("#webauthForm").trigger("submit");
}
async function makeAssertionOptions(form) {
toggleBtn(true);
let response = await fetch(beginLoginUrl, {
method: 'POST',
body: JSON.stringify({ login: form.Login, credential_type: 'webauthn' }),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
const json = await response.json();
if (!response.ok) {
toggleBtn(false);
displayError(json);
return;
}
const makeAssertionOptions = json["assertion"];
const sessionId = json["session_id"];
const challenge = makeAssertionOptions.challenge.replace(/-/g, "+").replace(/_/g, "/");
makeAssertionOptions.challenge = Uint8Array.from(atob(challenge), c => c.charCodeAt(0));
makeAssertionOptions.allowCredentials.forEach(function (listItem) {
var fixedId = listItem.id.replace(/\_/g, "/").replace(/\-/g, "+");
listItem.id = Uint8Array.from(atob(fixedId), c => c.charCodeAt(0));
});
let credential;
try {
credential = await navigator.credentials.get({ publicKey: makeAssertionOptions })
} catch (err) {
console.error(err);
toggleBtn(false);
return;
}
await makeAssertion(credential, form, sessionId);
}
tryListenForm();
};
setCsharpReference = function(ref) {
console.log(ref);
csharpReference = ref;
init();
};
</script>
}

View File

@@ -0,0 +1,179 @@
@using FormBuilder.Components.Workflow
@using FormBuilder
@using FormBuilder.Helpers
@using Microsoft.AspNetCore.Http
@using Microsoft.Extensions.Options;
@using SimpleIdServer.IdServer.Options;
@using System.Text.Json
@model SimpleIdServer.IdServer.UI.ViewModels.SidWorkflowViewModel
@inject IOptions<FormBuilderOptions> options
@inject IUriProvider uriProvider
@inject IHttpContextAccessor HttpContextAccessor;
@{
Layout = "~/Views/Shared/_FormBuilderLayout.cshtml";
var antiforgeryToken = HttpContextAccessor.HttpContext.Request.Cookies[options.Value.AntiforgeryCookieName];
Model.AntiforgeryToken.CookieValue = antiforgeryToken;
var step = Model.Workflow?.Steps?.SingleOrDefault(s => s.Id == Model.CurrentStepId);
var beginRegisterUrl = Model.Input["BeginRegisterUrl"].ToString();
var endRegisterUrl = Model.Input["EndRegisterUrl"].ToString();
var returnUrl = Model.Input["ReturnUrl"].ToString();
var isCreated = Model.Input["IsCreated"].ToString();
}
<component type="typeof(WorkflowViewer)"
render-mode="ServerPrerendered"
param-Input="@Model.Input"
param-Workflow="@Model.Workflow"
param-FormRecords="@Model.FormRecords"
param-CurrentStepId="@Model.CurrentStepId"
param-ErrorMessages="@Model.ErrorMessages"
param-SuccessMessages="@Model.SuccessMessages"
param-AntiforgeryToken="@Model.AntiforgeryToken"
param-SupportedLanguageCodes="@Model.SupportedLanguageCodes"
param-Template="@Model.Template" />
@section Header {
@foreach (var cssStyle in Model.Template.CssStyles)
{
<link rel="stylesheet" href="@uriProvider.GetCssUrl(Model.Template.Id, cssStyle)" />
}
@foreach (var jsStyle in Model.Template.JsStyles)
{
<script src="@uriProvider.GetJsUrl(Model.Template.Id, jsStyle)" type="text/javascript"></script>
}
}
@section Scripts {
<script type="text/javascript">
let csharpReference;
var init = function () {
var beginRegisterUrl = "@beginRegisterUrl";
var endRegisterUrl = "@endRegisterUrl";
var redirectUrl = "@returnUrl";
var isCreated = "@isCreated";
var isInitialized = false;
var displayError = function (errorJson) {
csharpReference.invokeMethodAsync("SetErrorMessage", errorJson["error_description"]);
}
var displaySuccessMessage = function () {
csharpReference.invokeMethodAsync("SetSuccessMessage", "User is created");
csharpReference.invokeMethodAsync("ClearErrorMessages");
csharpReference.invokeMethodAsync("SetInputData", isCreated, "true");
$("#webauthForm").hide();
}
async function registerCredential(newCredential, sessionId, login, nextRegistrationRedirectUrl) {
let attestationObject = new Uint8Array(newCredential.response.attestationObject);
let clientDataJSON = new Uint8Array(newCredential.response.clientDataJSON);
let rawId = new Uint8Array(newCredential.rawId);
const serializedAuthenticatorAttestationRawResponse = {
id: newCredential.id,
rawId: coerceToBase64Url(rawId),
type: newCredential.type,
extensions: newCredential.getClientExtensionResults(),
response: {
attestationObject: coerceToBase64Url(attestationObject),
clientDataJSON: coerceToBase64Url(clientDataJSON)
}
};
let response = await fetch(endRegisterUrl, {
method: 'POST',
body: JSON.stringify({
attestation: serializedAuthenticatorAttestationRawResponse,
login: login,
session_id: sessionId
}),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
let responseJson = await response.json();
if (!response.ok) {
displayError(responseJson);
return;
}
if (nextRegistrationRedirectUrl) {
window.location.href = nextRegistrationRedirectUrl;
return;
}
displaySuccessMessage();
}
async function makeCredential(login, displayName) {
let response = await fetch(beginRegisterUrl, {
method: 'POST',
body: JSON.stringify({ login: login, display_name: displayName, credential_type: 'webauthn' }),
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
});
let responseJson = await response.json();
if (!response.ok) {
displayError(responseJson);
return;
}
let makeCredentialOptions = responseJson["credential_create_options"];
let sessionId = responseJson["session_id"];
let nextRegistrationRedirectUrl = null;
if (responseJson['next_registration_redirect_url']) {
nextRegistrationRedirectUrl = responseJson['next_registration_redirect_url'];
}
makeCredentialOptions.challenge = coerceToArrayBuffer(makeCredentialOptions.challenge);
makeCredentialOptions.user.id = coerceToArrayBuffer(makeCredentialOptions.user.id);
makeCredentialOptions.excludeCredentials = makeCredentialOptions.excludeCredentials.map((c) => {
c.id = coerceToArrayBuffer(c.id);
return c;
});
if (makeCredentialOptions.authenticatorSelection.authenticatorAttachment === null) makeCredentialOptions.authenticatorSelection.authenticatorAttachment = undefined;
let newCredential;
try {
newCredential = await navigator.credentials.create({
publicKey: makeCredentialOptions
});
} catch (e) {
var msg = "Could not create credentials in browser. Probably because the username is already registered with your authenticator. Please change username or authenticator."
console.error(msg, e);
return;
}
await registerCredential(newCredential, sessionId, login, nextRegistrationRedirectUrl);
};
var tryListenForm = function () {
const elt = $("#webauthForm");
if (isInitialized === true) return;
if (elt.length === 0) {
setTimeout(() => tryListenForm(), 500);
return;
}
isInitialized = true;
elt.submit(function (e) {
e.preventDefault();
var login = $("#webauthForm input[name='Login']").val();
var displayName = $("#webauthForm input[name='DisplayName']").val();
makeCredential(login, displayName);
});
}
tryListenForm();
};
setCsharpReference = function (ref) {
csharpReference = ref;
init();
};
</script>
}

View File

@@ -0,0 +1 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

106
Program.cs Normal file
View File

@@ -0,0 +1,106 @@
// Copyright (c) SimpleIdServer. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using SimpleIdServer.IdServer.Builders;
using SimpleIdServer.IdServer.Config;
using SimpleIdServer.IdServer.Domains;
var corsPolicyName = "AllowAll";
var users = new List<User>
{
UserBuilder
.Create("administrator", "password", "Administrator")
.SetEmail("adm@mail.com")
.SetFirstname("Administrator")
.AddRole("BI.PORTAL_ADMIN")
.AddRole("BI.TENANT_ADMIN")
.AddClaim("tid", "cbaa13c2-e95b-470a-bbcb-18911d5a6025")
.Build(),
};
var api = ApiResourceBuilder.Create("urn:bighand:api:bi:portal", "BI Portal API").Build();
var clients = new List<Client>
{
ClientBuilder
.BuildUserAgentClient("foo", null, null, new[] { "http://localhost:4200/loggedin" })
.AddScope(new Scope("openid"), new Scope("profile"), new Scope("offline_access"))
.AddRefreshToken()
.Build(),
};
var scopes = new List<Scope> { ScopeBuilder.CreateRoleScope(clients[0], "bi.portal", "").Build() };
var biScope = new Scope()
{
ApiResources = { api },
Name = "bi.portal",
Clients = { clients[0] },
Description = "BI Portal Scope",
ClaimMappers =
{
new ScopeClaimMapper()
{
IncludeInAccessToken = true,
TokenClaimJsonType = TokenClaimJsonTypes.STRING,
TargetClaimPath = "role",
MapperType = MappingRuleTypes.USERATTRIBUTE,
SourceUserAttribute = "role",
SourceUserProperty = "role",
},
new ScopeClaimMapper()
{
IncludeInAccessToken = true,
TokenClaimJsonType = TokenClaimJsonTypes.STRING,
TargetClaimPath = "tid",
MapperType = MappingRuleTypes.USERATTRIBUTE,
SourceUserAttribute = "tid",
SourceUserProperty = "tid",
},
new ScopeClaimMapper()
{
IncludeInAccessToken = true,
TokenClaimJsonType = TokenClaimJsonTypes.STRING,
TargetClaimPath = "email",
MapperType = MappingRuleTypes.USERATTRIBUTE,
SourceUserAttribute = "email",
SourceUserProperty = "email",
},
},
};
clients[0].Scopes.Add(biScope);
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
options.AddPolicy(
name: corsPolicyName,
policy =>
{
policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
}
);
});
builder
.AddSidIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryUsers(users)
.AddInMemoryClients(clients)
.AddInMemoryScopes([biScope])
.AddInMemoryLanguages(DefaultLanguages.All)
.AddPwdAuthentication(true);
var app = builder.Build();
app.Services.SeedData();
app.UseSid();
app.UseCors(corsPolicyName);
await app.RunAsync();

View File

@@ -0,0 +1,12 @@
{
"profiles": {
"SimpleIdp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:65455;http://localhost:65456"
}
}
}

144
Resources/AccountsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,144 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AccountsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AccountsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AccountsResource", typeof(AccountsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Active sessions.
/// </summary>
public static string active_sessions {
get {
return ResourceManager.GetString("active_sessions", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authentication time {0}.
/// </summary>
public static string authentication_time {
get {
return ResourceManager.GetString("authentication_time", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Choose session.
/// </summary>
public static string choose_session {
get {
return ResourceManager.GetString("choose_session", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Expiration time {0}.
/// </summary>
public static string expiration_time {
get {
return ResourceManager.GetString("expiration_time", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reject.
/// </summary>
public static string reject {
get {
return ResourceManager.GetString("reject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Revoke a session.
/// </summary>
public static string revoke_session_title {
get {
return ResourceManager.GetString("revoke_session_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Select a session.
/// </summary>
public static string select_session {
get {
return ResourceManager.GetString("select_session", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The user session has been rejected.
/// </summary>
public static string useraccount_rejected {
get {
return ResourceManager.GetString("useraccount_rejected", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The user session has been switched.
/// </summary>
public static string useraccount_switched {
get {
return ResourceManager.GetString("useraccount_switched", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,147 @@
<?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="active_sessions" xml:space="preserve">
<value>Active sessions</value>
</data>
<data name="authentication_time" xml:space="preserve">
<value>Authentication time {0}</value>
</data>
<data name="choose_session" xml:space="preserve">
<value>Choose session</value>
</data>
<data name="expiration_time" xml:space="preserve">
<value>Expiration time {0}</value>
</data>
<data name="revoke_session_title" xml:space="preserve">
<value>Revoke a session</value>
</data>
<data name="select_session" xml:space="preserve">
<value>Select a session</value>
</data>
<data name="useraccount_switched" xml:space="preserve">
<value>The user session has been switched</value>
</data>
<data name="reject" xml:space="preserve">
<value>Reject</value>
</data>
<data name="useraccount_rejected" xml:space="preserve">
<value>The user session has been rejected</value>
</data>
</root>

View File

@@ -0,0 +1,180 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateConsoleResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateConsoleResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateConsoleResource", typeof(AuthenticateConsoleResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Code has a validity of {0} seconds.
/// </summary>
public static string code_validity {
get {
return ResourceManager.GetString("code_validity", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code has been sent.
/// </summary>
public static string confirmationcode_sent {
get {
return ResourceManager.GetString("confirmationcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is invalid.
/// </summary>
public static string invalid_confirmationcode {
get {
return ResourceManager.GetString("invalid_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The confirmation code is invalid.
/// </summary>
public static string invalid_credential {
get {
return ResourceManager.GetString("invalid_credential", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is missing.
/// </summary>
public static string missing_confirmationcode {
get {
return ResourceManager.GetString("missing_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no OTP configured.
/// </summary>
public static string no_active_otp {
get {
return ResourceManager.GetString("no_active_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send confirmation code.
/// </summary>
public static string sendconfirmationcode {
get {
return ResourceManager.GetString("sendconfirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,159 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="code_validity" xml:space="preserve">
<value>Code has a validity of {0} seconds</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="confirmationcode_sent" xml:space="preserve">
<value>Confirmation code has been sent</value>
</data>
<data name="invalid_confirmationcode" xml:space="preserve">
<value>Confirmation code is invalid</value>
</data>
<data name="invalid_credential" xml:space="preserve">
<value>The confirmation code is invalid</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_confirmationcode" xml:space="preserve">
<value>Confirmation code is missing</value>
</data>
<data name="no_active_otp" xml:space="preserve">
<value>There is no OTP configured</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="sendconfirmationcode" xml:space="preserve">
<value>Send confirmation code</value>
</data>
<data name="title" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
</root>

View File

@@ -0,0 +1,270 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateEmailResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateEmailResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateEmailResource", typeof(AuthenticateEmailResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is not correct.
/// </summary>
public static string bad_email {
get {
return ResourceManager.GetString("bad_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Code has a validity of {0} seconds.
/// </summary>
public static string code_validity {
get {
return ResourceManager.GetString("code_validity", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code has been sent.
/// </summary>
public static string confirmationcode_sent {
get {
return ResourceManager.GetString("confirmationcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à An error occured while trying to decrypt the return url.
/// </summary>
public static string cryptographic_error {
get {
return ResourceManager.GetString("cryptographic_error", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email.
/// </summary>
public static string email {
get {
return ResourceManager.GetString("email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is invalid.
/// </summary>
public static string invalid_confirmationcode {
get {
return ResourceManager.GetString("invalid_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is invalid.
/// </summary>
public static string invalid_email {
get {
return ResourceManager.GetString("invalid_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is missing.
/// </summary>
public static string missing_confirmationcode {
get {
return ResourceManager.GetString("missing_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is missing.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Return url is missing.
/// </summary>
public static string missing_return_url {
get {
return ResourceManager.GetString("missing_return_url", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no OTP configured.
/// </summary>
public static string no_active_otp {
get {
return ResourceManager.GetString("no_active_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Policy.
/// </summary>
public static string policy {
get {
return ResourceManager.GetString("policy", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send confirmation code.
/// </summary>
public static string sendconfirmationcode {
get {
return ResourceManager.GetString("sendconfirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Terms of service.
/// </summary>
public static string tos {
get {
return ResourceManager.GetString("tos", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is unknown.
/// </summary>
public static string unknown_email {
get {
return ResourceManager.GetString("unknown_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The given email does not correspond to any user.
/// </summary>
public static string unknown_user {
get {
return ResourceManager.GetString("unknown_user", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same name already exists.
/// </summary>
public static string user_exists {
get {
return ResourceManager.GetString("user_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is already taken by an another user.
/// </summary>
public static string value_exists {
get {
return ResourceManager.GetString("value_exists", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,189 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="bad_email" xml:space="preserve">
<value>Email is not correct</value>
</data>
<data name="code_validity" xml:space="preserve">
<value>Code has a validity of {0} seconds</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="confirmationcode_sent" xml:space="preserve">
<value>Confirmation code has been sent</value>
</data>
<data name="cryptographic_error" xml:space="preserve">
<value>An error occured while trying to decrypt the return url</value>
</data>
<data name="email" xml:space="preserve">
<value>Email</value>
</data>
<data name="invalid_confirmationcode" xml:space="preserve">
<value>Confirmation code is invalid</value>
</data>
<data name="invalid_email" xml:space="preserve">
<value>Email is invalid</value>
</data>
<data name="missing_confirmationcode" xml:space="preserve">
<value>Confirmation code is missing</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Email is missing</value>
</data>
<data name="missing_return_url" xml:space="preserve">
<value>Return url is missing</value>
</data>
<data name="no_active_otp" xml:space="preserve">
<value>There is no OTP configured</value>
</data>
<data name="policy" xml:space="preserve">
<value>Policy</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="sendconfirmationcode" xml:space="preserve">
<value>Send confirmation code</value>
</data>
<data name="title" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="tos" xml:space="preserve">
<value>Terms of service</value>
</data>
<data name="unknown_email" xml:space="preserve">
<value>Email is unknown</value>
</data>
<data name="unknown_user" xml:space="preserve">
<value>The given email does not correspond to any user</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
<data name="user_exists" xml:space="preserve">
<value>User with the same name already exists</value>
</data>
<data name="value_exists" xml:space="preserve">
<value>Email is already taken by an another user</value>
</data>
</root>

View File

@@ -0,0 +1,252 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateMobileResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateMobileResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateMobileResource", typeof(AuthenticateMobileResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate with your mobile device.
/// </summary>
public static string auth_title {
get {
return ResourceManager.GetString("auth_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credential is added.
/// </summary>
public static string credential_added {
get {
return ResourceManager.GetString("credential_added", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Display name.
/// </summary>
public static string display_name {
get {
return ResourceManager.GetString("display_name", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll a new mobile application.
/// </summary>
public static string enroll_mobile {
get {
return ResourceManager.GetString("enroll_mobile", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Generate QR Code.
/// </summary>
public static string generate_qrcode {
get {
return ResourceManager.GetString("generate_qrcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Session Identitfier is invalid.
/// </summary>
public static string invalid_session_id {
get {
return ResourceManager.GetString("invalid_session_id", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Attestation is missing.
/// </summary>
public static string missing_attestation {
get {
return ResourceManager.GetString("missing_attestation", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à FIDO2 credential is missing.
/// </summary>
public static string missing_credential {
get {
return ResourceManager.GetString("missing_credential", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Session Identifier is missing.
/// </summary>
public static string missing_session_id {
get {
return ResourceManager.GetString("missing_session_id", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à QR Code.
/// </summary>
public static string qrcode {
get {
return ResourceManager.GetString("qrcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register a user.
/// </summary>
public static string register_mobile {
get {
return ResourceManager.GetString("register_mobile", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register SID Mobile application.
/// </summary>
public static string register_title {
get {
return ResourceManager.GetString("register_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scan the QR code with your mobile application.
/// </summary>
public static string scan_mobileapp {
get {
return ResourceManager.GetString("scan_mobileapp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Registration has not been validated.
/// </summary>
public static string session_not_validate {
get {
return ResourceManager.GetString("session_not_validate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with same login already exists.
/// </summary>
public static string user_already_exists {
get {
return ResourceManager.GetString("user_already_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,183 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="auth_title" xml:space="preserve">
<value>Authenticate with your mobile device</value>
</data>
<data name="credential_added" xml:space="preserve">
<value>Credential is added</value>
</data>
<data name="display_name" xml:space="preserve">
<value>Display name</value>
</data>
<data name="enroll_mobile" xml:space="preserve">
<value>Enroll a new mobile application</value>
</data>
<data name="generate_qrcode" xml:space="preserve">
<value>Generate QR Code</value>
</data>
<data name="invalid_session_id" xml:space="preserve">
<value>Session Identitfier is invalid</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_attestation" xml:space="preserve">
<value>Attestation is missing</value>
</data>
<data name="missing_credential" xml:space="preserve">
<value>FIDO2 credential is missing</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="missing_session_id" xml:space="preserve">
<value>Session Identifier is missing</value>
</data>
<data name="qrcode" xml:space="preserve">
<value>QR Code</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="register_mobile" xml:space="preserve">
<value>Register a user</value>
</data>
<data name="register_title" xml:space="preserve">
<value>Register SID Mobile application</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="scan_mobileapp" xml:space="preserve">
<value>Scan the QR code with your mobile application</value>
</data>
<data name="session_not_validate" xml:space="preserve">
<value>Registration has not been validated</value>
</data>
<data name="user_already_exists" xml:space="preserve">
<value>User with same login already exists</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
</root>

View File

@@ -0,0 +1,234 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateOtpResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateOtpResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateOtpResource", typeof(AuthenticateOtpResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Code has a validity of {0} seconds.
/// </summary>
public static string code_validity {
get {
return ResourceManager.GetString("code_validity", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code has been sent.
/// </summary>
public static string confirmationcode_sent {
get {
return ResourceManager.GetString("confirmationcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à An error occured while trying to decrypt the return url.
/// </summary>
public static string cryptographic_error {
get {
return ResourceManager.GetString("cryptographic_error", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is invalid.
/// </summary>
public static string invalid_confirmationcode {
get {
return ResourceManager.GetString("invalid_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The OTP is not valid.
/// </summary>
public static string invalid_credential {
get {
return ResourceManager.GetString("invalid_credential", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is missing.
/// </summary>
public static string missing_confirmationcode {
get {
return ResourceManager.GetString("missing_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Return url is missing.
/// </summary>
public static string missing_return_url {
get {
return ResourceManager.GetString("missing_return_url", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no OTP configured.
/// </summary>
public static string no_active_otp {
get {
return ResourceManager.GetString("no_active_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Policy.
/// </summary>
public static string policy {
get {
return ResourceManager.GetString("policy", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Terms of service.
/// </summary>
public static string tos {
get {
return ResourceManager.GetString("tos", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is unknown.
/// </summary>
public static string unknown_login {
get {
return ResourceManager.GetString("unknown_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The given login does not correspond to any user.
/// </summary>
public static string unknown_user {
get {
return ResourceManager.GetString("unknown_user", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,177 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="code_validity" xml:space="preserve">
<value>Code has a validity of {0} seconds</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="confirmationcode_sent" xml:space="preserve">
<value>Confirmation code has been sent</value>
</data>
<data name="cryptographic_error" xml:space="preserve">
<value>An error occured while trying to decrypt the return url</value>
</data>
<data name="invalid_confirmationcode" xml:space="preserve">
<value>Confirmation code is invalid</value>
</data>
<data name="invalid_credential" xml:space="preserve">
<value>The OTP is not valid</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_confirmationcode" xml:space="preserve">
<value>Confirmation code is missing</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="missing_return_url" xml:space="preserve">
<value>Return url is missing</value>
</data>
<data name="no_active_otp" xml:space="preserve">
<value>There is no OTP configured</value>
</data>
<data name="policy" xml:space="preserve">
<value>Policy</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="title" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="tos" xml:space="preserve">
<value>Terms of service</value>
</data>
<data name="unknown_login" xml:space="preserve">
<value>Login is unknown</value>
</data>
<data name="unknown_user" xml:space="preserve">
<value>The given login does not correspond to any user</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
</root>

View File

@@ -0,0 +1,243 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticatePasswordResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticatePasswordResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticatePasswordResource", typeof(AuthenticatePasswordResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à External authentication.
/// </summary>
public static string external_authenticate {
get {
return ResourceManager.GetString("external_authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credential is invalid.
/// </summary>
public static string invalid_credential {
get {
return ResourceManager.GetString("invalid_credential", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string invalid_login {
get {
return ResourceManager.GetString("invalid_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The maximum number of active sessions has been reached..
/// </summary>
public static string maximum_number_active_sessions {
get {
return ResourceManager.GetString("maximum_number_active_sessions", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password is missing.
/// </summary>
public static string missing_password {
get {
return ResourceManager.GetString("missing_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Return url is missing.
/// </summary>
public static string missing_return_url {
get {
return ResourceManager.GetString("missing_return_url", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password.
/// </summary>
public static string password {
get {
return ResourceManager.GetString("password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Policy.
/// </summary>
public static string policy {
get {
return ResourceManager.GetString("policy", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Click the following link to reject sessions.
/// </summary>
public static string reject_sessions {
get {
return ResourceManager.GetString("reject_sessions", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember me.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Forget my password.
/// </summary>
public static string reset_pwd {
get {
return ResourceManager.GetString("reset_pwd", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Sessions.
/// </summary>
public static string sessions {
get {
return ResourceManager.GetString("sessions", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Submit.
/// </summary>
public static string submit {
get {
return ResourceManager.GetString("submit", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Terms of service.
/// </summary>
public static string tos {
get {
return ResourceManager.GetString("tos", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The user doesn&apos;t exist.
/// </summary>
public static string unknown_user {
get {
return ResourceManager.GetString("unknown_user", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,180 @@
<?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="external_authenticate" xml:space="preserve">
<value>External authentication</value>
</data>
<data name="invalid_credential" xml:space="preserve">
<value>Credential is invalid</value>
</data>
<data name="invalid_login" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="missing_password" xml:space="preserve">
<value>Password is missing</value>
</data>
<data name="missing_return_url" xml:space="preserve">
<value>Return url is missing</value>
</data>
<data name="password" xml:space="preserve">
<value>Password</value>
</data>
<data name="policy" xml:space="preserve">
<value>Policy</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember me</value>
</data>
<data name="reset_pwd" xml:space="preserve">
<value>Forget my password</value>
</data>
<data name="submit" xml:space="preserve">
<value>Submit</value>
</data>
<data name="title" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="tos" xml:space="preserve">
<value>Terms of service</value>
</data>
<data name="unknown_user" xml:space="preserve">
<value>The user doesn't exist</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
<data name="maximum_number_active_sessions" xml:space="preserve">
<value>The maximum number of active sessions has been reached.</value>
</data>
<data name="reject_sessions" xml:space="preserve">
<value>Click the following link to reject sessions</value>
</data>
<data name="sessions" xml:space="preserve">
<value>Sessions</value>
</data>
</root>

View File

@@ -0,0 +1,234 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateSmsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateSmsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateSmsResource", typeof(AuthenticateSmsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Code has a validity of {0} seconds.
/// </summary>
public static string code_validity {
get {
return ResourceManager.GetString("code_validity", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code has been sent.
/// </summary>
public static string confirmationcode_sent {
get {
return ResourceManager.GetString("confirmationcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à An error occured while trying to decrypt the return url.
/// </summary>
public static string cryptographic_error {
get {
return ResourceManager.GetString("cryptographic_error", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is invalid.
/// </summary>
public static string invalid_confirmationcode {
get {
return ResourceManager.GetString("invalid_confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number is missing.
/// </summary>
public static string missing_phonenumber {
get {
return ResourceManager.GetString("missing_phonenumber", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no OTP configured.
/// </summary>
public static string no_active_otp {
get {
return ResourceManager.GetString("no_active_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number.
/// </summary>
public static string phonenumber {
get {
return ResourceManager.GetString("phonenumber", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Policy.
/// </summary>
public static string policy {
get {
return ResourceManager.GetString("policy", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send a confirmation code.
/// </summary>
public static string sendconfirmationcode {
get {
return ResourceManager.GetString("sendconfirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Terms of service.
/// </summary>
public static string tos {
get {
return ResourceManager.GetString("tos", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number is unknown.
/// </summary>
public static string unknown_phonenumber {
get {
return ResourceManager.GetString("unknown_phonenumber", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The given phone number does not correspond to any user.
/// </summary>
public static string unknown_user {
get {
return ResourceManager.GetString("unknown_user", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same name already exists.
/// </summary>
public static string user_exists {
get {
return ResourceManager.GetString("user_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number is already taken by an another user.
/// </summary>
public static string value_exists {
get {
return ResourceManager.GetString("value_exists", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,177 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="code_validity" xml:space="preserve">
<value>Code has a validity of {0} seconds</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="confirmationcode_sent" xml:space="preserve">
<value>Confirmation code has been sent</value>
</data>
<data name="cryptographic_error" xml:space="preserve">
<value>An error occured while trying to decrypt the return url</value>
</data>
<data name="invalid_confirmationcode" xml:space="preserve">
<value>Confirmation code is invalid</value>
</data>
<data name="missing_phonenumber" xml:space="preserve">
<value>Phone number is missing</value>
</data>
<data name="no_active_otp" xml:space="preserve">
<value>There is no OTP configured</value>
</data>
<data name="phonenumber" xml:space="preserve">
<value>Phone number</value>
</data>
<data name="policy" xml:space="preserve">
<value>Policy</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="sendconfirmationcode" xml:space="preserve">
<value>Send a confirmation code</value>
</data>
<data name="title" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="tos" xml:space="preserve">
<value>Terms of service</value>
</data>
<data name="unknown_phonenumber" xml:space="preserve">
<value>Phone number is unknown</value>
</data>
<data name="unknown_user" xml:space="preserve">
<value>The given phone number does not correspond to any user</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
<data name="user_exists" xml:space="preserve">
<value>User with the same name already exists</value>
</data>
<data name="value_exists" xml:space="preserve">
<value>Phone number is already taken by an another user</value>
</data>
</root>

View File

@@ -0,0 +1,234 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AuthenticateWebauthnResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AuthenticateWebauthnResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.AuthenticateWebauthnResource", typeof(AuthenticateWebauthnResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credential is added.
/// </summary>
public static string credential_added {
get {
return ResourceManager.GetString("credential_added", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Display name.
/// </summary>
public static string display_name {
get {
return ResourceManager.GetString("display_name", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll a new web authentication method.
/// </summary>
public static string enroll_mobile {
get {
return ResourceManager.GetString("enroll_mobile", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Attestation is missing.
/// </summary>
public static string missing_attestation {
get {
return ResourceManager.GetString("missing_attestation", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à FIDO2 credential is missing.
/// </summary>
public static string missing_credential {
get {
return ResourceManager.GetString("missing_credential", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The session_id is missing.
/// </summary>
public static string missing_session_id {
get {
return ResourceManager.GetString("missing_session_id", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register web authentication.
/// </summary>
public static string register_title {
get {
return ResourceManager.GetString("register_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register a user.
/// </summary>
public static string register_webauthn {
get {
return ResourceManager.GetString("register_webauthn", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Remember my login.
/// </summary>
public static string remember_login {
get {
return ResourceManager.GetString("remember_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Registration has not been validated.
/// </summary>
public static string session_not_validate {
get {
return ResourceManager.GetString("session_not_validate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The session must be validate.
/// </summary>
public static string session_not_validated {
get {
return ResourceManager.GetString("session_not_validated", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Either the session is expired or doesn&apos;t exist.
/// </summary>
public static string unknown_session {
get {
return ResourceManager.GetString("unknown_session", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll a new web authentication method.
/// </summary>
public static string update_webauthn {
get {
return ResourceManager.GetString("update_webauthn", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with same login already exists.
/// </summary>
public static string user_already_exists {
get {
return ResourceManager.GetString("user_already_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User account is blocked.
/// </summary>
public static string user_blocked {
get {
return ResourceManager.GetString("user_blocked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,177 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="credential_added" xml:space="preserve">
<value>Credential is added</value>
</data>
<data name="display_name" xml:space="preserve">
<value>Display name</value>
</data>
<data name="enroll_mobile" xml:space="preserve">
<value>Enroll a new web authentication method</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_attestation" xml:space="preserve">
<value>Attestation is missing</value>
</data>
<data name="missing_credential" xml:space="preserve">
<value>FIDO2 credential is missing</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="missing_session_id" xml:space="preserve">
<value>The session_id is missing</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="register_title" xml:space="preserve">
<value>Register web authentication</value>
</data>
<data name="register_webauthn" xml:space="preserve">
<value>Register a user</value>
</data>
<data name="remember_login" xml:space="preserve">
<value>Remember my login</value>
</data>
<data name="session_not_validate" xml:space="preserve">
<value>Registration has not been validated</value>
</data>
<data name="session_not_validated" xml:space="preserve">
<value>The session must be validate</value>
</data>
<data name="unknown_session" xml:space="preserve">
<value>Either the session is expired or doesn't exist</value>
</data>
<data name="update_webauthn" xml:space="preserve">
<value>Enroll a new web authentication method</value>
</data>
<data name="user_already_exists" xml:space="preserve">
<value>User with same login already exists</value>
</data>
<data name="user_blocked" xml:space="preserve">
<value>User account is blocked</value>
</data>
</root>

162
Resources/BCConsentsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,162 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class BCConsentsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal BCConsentsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.BCConsentsResource", typeof(BCConsentsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Exception occured while trying to confirm or reject the consent.
/// </summary>
public static string cannot_confirm_or_reject {
get {
return ResourceManager.GetString("cannot_confirm_or_reject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirm.
/// </summary>
public static string confirm {
get {
return ResourceManager.GetString("confirm", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The Client App &apos;{0}&apos; is requesting the following permissions.
/// </summary>
public static string consent_client_access {
get {
return ResourceManager.GetString("consent_client_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The consent is confirmed.
/// </summary>
public static string consent_confirmed {
get {
return ResourceManager.GetString("consent_confirmed", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The consent is rejected.
/// </summary>
public static string consent_rejected {
get {
return ResourceManager.GetString("consent_rejected", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Exception occured while trying to decrypt the redirection url.
/// </summary>
public static string cryptography_error {
get {
return ResourceManager.GetString("cryptography_error", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Message.
/// </summary>
public static string message {
get {
return ResourceManager.GetString("message", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reject.
/// </summary>
public static string reject {
get {
return ResourceManager.GetString("reject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scopes.
/// </summary>
public static string scopes {
get {
return ResourceManager.GetString("scopes", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à You are not authorized to perform any action on this back channel authentication.
/// </summary>
public static string unauthorized_bc_auth {
get {
return ResourceManager.GetString("unauthorized_bc_auth", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Back channel authentication is unknown.
/// </summary>
public static string unknown_bc_authorize {
get {
return ResourceManager.GetString("unknown_bc_authorize", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,153 @@
<?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="cannot_confirm_or_reject" xml:space="preserve">
<value>Exception occured while trying to confirm or reject the consent</value>
</data>
<data name="confirm" xml:space="preserve">
<value>Confirm</value>
</data>
<data name="consent_client_access" xml:space="preserve">
<value>The Client App '{0}' is requesting the following permissions</value>
</data>
<data name="consent_confirmed" xml:space="preserve">
<value>The consent is confirmed</value>
</data>
<data name="consent_rejected" xml:space="preserve">
<value>The consent is rejected</value>
</data>
<data name="cryptography_error" xml:space="preserve">
<value>Exception occured while trying to decrypt the redirection url</value>
</data>
<data name="message" xml:space="preserve">
<value>Message</value>
</data>
<data name="reject" xml:space="preserve">
<value>Reject</value>
</data>
<data name="scopes" xml:space="preserve">
<value>Scopes</value>
</data>
<data name="unauthorized_bc_auth" xml:space="preserve">
<value>You are not authorized to perform any action on this back channel authentication</value>
</data>
<data name="unknown_bc_authorize" xml:space="preserve">
<value>Back channel authentication is unknown</value>
</data>
</root>

View File

@@ -0,0 +1,81 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class CheckSessionResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal CheckSessionResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.CheckSessionResource", typeof(CheckSessionResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Revoke session.
/// </summary>
public static string revoke_session_title {
get {
return ResourceManager.GetString("revoke_session_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The session is being revoked; you will be redirected to the website in {0} seconds..
/// </summary>
public static string session_being_revoked {
get {
return ResourceManager.GetString("session_being_revoked", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,126 @@
<?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="revoke_session_title" xml:space="preserve">
<value>Revoke session</value>
</data>
<data name="session_being_revoked" xml:space="preserve">
<value>The session is being revoked; you will be redirected to the website in {0} seconds.</value>
</data>
</root>

View File

@@ -0,0 +1,189 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ConfirmResetPasswordResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ConfirmResetPasswordResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ConfirmResetPasswordResource", typeof(ConfirmResetPasswordResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Code.
/// </summary>
public static string code {
get {
return ResourceManager.GetString("code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation password is required.
/// </summary>
public static string confirmation_password {
get {
return ResourceManager.GetString("confirmation_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The validation code is invalid or has expired.
/// </summary>
public static string invalid_link {
get {
return ResourceManager.GetString("invalid_link", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The validation code is invalid or has expired.
/// </summary>
public static string invalid_otpcode {
get {
return ResourceManager.GetString("invalid_otpcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Validation code is required.
/// </summary>
public static string missing_code {
get {
return ResourceManager.GetString("missing_code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Destination is required.
/// </summary>
public static string missing_destination {
get {
return ResourceManager.GetString("missing_destination", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password is required.
/// </summary>
public static string missing_password {
get {
return ResourceManager.GetString("missing_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password.
/// </summary>
public static string password {
get {
return ResourceManager.GetString("password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Your password has been updated.
/// </summary>
public static string password_updated {
get {
return ResourceManager.GetString("password_updated", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Repeat the password.
/// </summary>
public static string repeat_password {
get {
return ResourceManager.GetString("repeat_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reset your password.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Both passwords don&apos;t match.
/// </summary>
public static string unmatch_password {
get {
return ResourceManager.GetString("unmatch_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update.
/// </summary>
public static string update {
get {
return ResourceManager.GetString("update", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,162 @@
<?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="code" xml:space="preserve">
<value>Code</value>
</data>
<data name="confirmation_password" xml:space="preserve">
<value>Confirmation password is required</value>
</data>
<data name="invalid_link" xml:space="preserve">
<value>The validation code is invalid or has expired</value>
</data>
<data name="invalid_otpcode" xml:space="preserve">
<value>The validation code is invalid or has expired</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_code" xml:space="preserve">
<value>Validation code is required</value>
</data>
<data name="missing_destination" xml:space="preserve">
<value>Destination is required</value>
</data>
<data name="missing_password" xml:space="preserve">
<value>Password is required</value>
</data>
<data name="password" xml:space="preserve">
<value>Password</value>
</data>
<data name="password_updated" xml:space="preserve">
<value>Your password has been updated</value>
</data>
<data name="repeat_password" xml:space="preserve">
<value>Repeat the password</value>
</data>
<data name="title" xml:space="preserve">
<value>Reset your password</value>
</data>
<data name="unmatch_password" xml:space="preserve">
<value>Both passwords don't match</value>
</data>
<data name="update" xml:space="preserve">
<value>Update</value>
</data>
</root>

126
Resources/ConsentsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,126 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ConsentsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ConsentsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ConsentsResource", typeof(ConsentsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Claims.
/// </summary>
public static string claims {
get {
return ResourceManager.GetString("claims", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirm.
/// </summary>
public static string confirm {
get {
return ResourceManager.GetString("confirm", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The client &apos;{0}&apos; is requesting access to your account.
/// </summary>
public static string consent_client_access {
get {
return ResourceManager.GetString("consent_client_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Incoming request is invalid.
/// </summary>
public static string invalid_request {
get {
return ResourceManager.GetString("invalid_request", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Manage consents.
/// </summary>
public static string manage_consents {
get {
return ResourceManager.GetString("manage_consents", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reject.
/// </summary>
public static string reject {
get {
return ResourceManager.GetString("reject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scopes.
/// </summary>
public static string scopes {
get {
return ResourceManager.GetString("scopes", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,141 @@
<?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="claims" xml:space="preserve">
<value>Claims</value>
</data>
<data name="confirm" xml:space="preserve">
<value>Confirm</value>
</data>
<data name="consent_client_access" xml:space="preserve">
<value>The client '{0}' is requesting access to your account</value>
</data>
<data name="invalid_request" xml:space="preserve">
<value>Incoming request is invalid</value>
</data>
<data name="manage_consents" xml:space="preserve">
<value>Manage consents</value>
</data>
<data name="reject" xml:space="preserve">
<value>Reject</value>
</data>
<data name="scopes" xml:space="preserve">
<value>Scopes</value>
</data>
</root>

117
Resources/CredentialsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,117 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class CredentialsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal CredentialsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.CredentialsResource", typeof(CredentialsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no wallet.
/// </summary>
public static string noWallet {
get {
return ResourceManager.GetString("noWallet", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scan the QR code with your wallet.
/// </summary>
public static string scanQRCode {
get {
return ResourceManager.GetString("scanQRCode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Select the wallet.
/// </summary>
public static string selectWallet {
get {
return ResourceManager.GetString("selectWallet", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Share.
/// </summary>
public static string share {
get {
return ResourceManager.GetString("share", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Share credential with one wallet.
/// </summary>
public static string shareOneWallet {
get {
return ResourceManager.GetString("shareOneWallet", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credentials.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,138 @@
<?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="noWallet" xml:space="preserve">
<value>There is no wallet</value>
</data>
<data name="scanQRCode" xml:space="preserve">
<value>Scan the QR code with your wallet</value>
</data>
<data name="selectWallet" xml:space="preserve">
<value>Select the wallet</value>
</data>
<data name="share" xml:space="preserve">
<value>Share</value>
</data>
<data name="shareOneWallet" xml:space="preserve">
<value>Share credential with one wallet</value>
</data>
<data name="title" xml:space="preserve">
<value>Credentials</value>
</data>
</root>

153
Resources/DeviceCodeResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,153 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class DeviceCodeResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal DeviceCodeResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.DeviceCodeResource", typeof(DeviceCodeResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Device Authentication is expired.
/// </summary>
public static string auth_device_code_expired {
get {
return ResourceManager.GetString("auth_device_code_expired", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirm.
/// </summary>
public static string confirm {
get {
return ResourceManager.GetString("confirm", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Device Authentication is confirmed.
/// </summary>
public static string confirmed {
get {
return ResourceManager.GetString("confirmed", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The client &apos;{0}&apos; is requesting access to your account.
/// </summary>
public static string consent_client_access {
get {
return ResourceManager.GetString("consent_client_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Manage consents.
/// </summary>
public static string manage_consents {
get {
return ResourceManager.GetString("manage_consents", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Device Authentication must have a PENDING state.
/// </summary>
public static string not_pending_auth_device_code {
get {
return ResourceManager.GetString("not_pending_auth_device_code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reject.
/// </summary>
public static string reject {
get {
return ResourceManager.GetString("reject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scopes.
/// </summary>
public static string scopes {
get {
return ResourceManager.GetString("scopes", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Device Authentication doesn&apos;t exist.
/// </summary>
public static string unknown_user_code {
get {
return ResourceManager.GetString("unknown_user_code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User code.
/// </summary>
public static string usercode {
get {
return ResourceManager.GetString("usercode", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,150 @@
<?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="auth_device_code_expired" xml:space="preserve">
<value>Device Authentication is expired</value>
</data>
<data name="confirm" xml:space="preserve">
<value>Confirm</value>
</data>
<data name="confirmed" xml:space="preserve">
<value>Device Authentication is confirmed</value>
</data>
<data name="consent_client_access" xml:space="preserve">
<value>The client '{0}' is requesting access to your account</value>
</data>
<data name="manage_consents" xml:space="preserve">
<value>Manage consents</value>
</data>
<data name="not_pending_auth_device_code" xml:space="preserve">
<value>Device Authentication must have a PENDING state</value>
</data>
<data name="reject" xml:space="preserve">
<value>Reject</value>
</data>
<data name="scopes" xml:space="preserve">
<value>Scopes</value>
</data>
<data name="unknown_user_code" xml:space="preserve">
<value>Device Authentication doesn't exist</value>
</data>
<data name="usercode" xml:space="preserve">
<value>User code</value>
</data>
</root>

72
Resources/ErrorsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,72 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ErrorsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ErrorsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ErrorsResource", typeof(ErrorsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Invalid request.
/// </summary>
public static string invalid_request {
get {
return ResourceManager.GetString("invalid_request", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,123 @@
<?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="invalid_request" xml:space="preserve">
<value>Invalid request</value>
</data>
</root>

72
Resources/HomeResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,72 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class HomeResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal HomeResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.HomeResource", typeof(HomeResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Home.
/// </summary>
public static string home {
get {
return ResourceManager.GetString("home", resourceCulture);
}
}
}
}

123
Resources/HomeResource.resx Normal file
View File

@@ -0,0 +1,123 @@
<?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="home" xml:space="preserve">
<value>Home</value>
</data>
</root>

216
Resources/LayoutResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,216 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class LayoutResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal LayoutResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.LayoutResource", typeof(LayoutResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authenticate.
/// </summary>
public static string authenticate {
get {
return ResourceManager.GetString("authenticate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Back.
/// </summary>
public static string back {
get {
return ResourceManager.GetString("back", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Choose active session.
/// </summary>
public static string choose_session {
get {
return ResourceManager.GetString("choose_session", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Consents.
/// </summary>
public static string consents {
get {
return ResourceManager.GetString("consents", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credential has been updated.
/// </summary>
public static string credential_is_updated {
get {
return ResourceManager.GetString("credential_is_updated", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Device Authentication.
/// </summary>
public static string deviceauth {
get {
return ResourceManager.GetString("deviceauth", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Disconnect.
/// </summary>
public static string disconnect {
get {
return ResourceManager.GetString("disconnect", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Disconnected.
/// </summary>
public static string Disconnected {
get {
return ResourceManager.GetString("Disconnected", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à English.
/// </summary>
public static string en {
get {
return ResourceManager.GetString("en", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à French.
/// </summary>
public static string fr {
get {
return ResourceManager.GetString("fr", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Languages.
/// </summary>
public static string languages {
get {
return ResourceManager.GetString("languages", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à You are not allowed to execute the registration action.
/// </summary>
public static string not_allowed_to_execute_registration {
get {
return ResourceManager.GetString("not_allowed_to_execute_registration", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Language is {0}.
/// </summary>
public static string selected_language {
get {
return ResourceManager.GetString("selected_language", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Sessions.
/// </summary>
public static string Sessions {
get {
return ResourceManager.GetString("Sessions", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Unexpected error.
/// </summary>
public static string UnexpectedError {
get {
return ResourceManager.GetString("UnexpectedError", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User is created.
/// </summary>
public static string user_is_created {
get {
return ResourceManager.GetString("user_is_created", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à You are disconnected.
/// </summary>
public static string YouAreDisconnected {
get {
return ResourceManager.GetString("YouAreDisconnected", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,171 @@
<?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="authenticate" xml:space="preserve">
<value>Authenticate</value>
</data>
<data name="back" xml:space="preserve">
<value>Back</value>
</data>
<data name="choose_session" xml:space="preserve">
<value>Choose active session</value>
</data>
<data name="consents" xml:space="preserve">
<value>Consents</value>
</data>
<data name="credential_is_updated" xml:space="preserve">
<value>Credential has been updated</value>
</data>
<data name="deviceauth" xml:space="preserve">
<value>Device Authentication</value>
</data>
<data name="disconnect" xml:space="preserve">
<value>Disconnect</value>
</data>
<data name="Disconnected" xml:space="preserve">
<value>Disconnected</value>
</data>
<data name="en" xml:space="preserve">
<value>English</value>
</data>
<data name="fr" xml:space="preserve">
<value>French</value>
</data>
<data name="languages" xml:space="preserve">
<value>Languages</value>
</data>
<data name="not_allowed_to_execute_registration" xml:space="preserve">
<value>You are not allowed to execute the registration action</value>
</data>
<data name="selected_language" xml:space="preserve">
<value>Language is {0}</value>
</data>
<data name="Sessions" xml:space="preserve">
<value>Sessions</value>
</data>
<data name="UnexpectedError" xml:space="preserve">
<value>Unexpected error</value>
</data>
<data name="user_is_created" xml:space="preserve">
<value>User is created</value>
</data>
<data name="YouAreDisconnected" xml:space="preserve">
<value>You are disconnected</value>
</data>
</root>

360
Resources/ProfileResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,360 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ProfileResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ProfileResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ProfileResource", typeof(ProfileResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Accept.
/// </summary>
public static string accept_access {
get {
return ResourceManager.GetString("accept_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string account_login {
get {
return ResourceManager.GetString("account_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Name.
/// </summary>
public static string account_name {
get {
return ResourceManager.GetString("account_name", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à These apps have been granted access to interact with your SimpleIdServer account. To prevent them from accessing it in the future, click on &apos;Revoke Access&apos;.
/// </summary>
public static string approved_apps_description {
get {
return ResourceManager.GetString("approved_apps_description", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Approved applications.
/// </summary>
public static string approved_apps_title {
get {
return ResourceManager.GetString("approved_apps_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Authorization Details.
/// </summary>
public static string auth_details {
get {
return ResourceManager.GetString("auth_details", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Claims.
/// </summary>
public static string claims {
get {
return ResourceManager.GetString("claims", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Client.
/// </summary>
public static string client {
get {
return ResourceManager.GetString("client", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Created at.
/// </summary>
public static string created_at {
get {
return ResourceManager.GetString("created_at", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Credentials.
/// </summary>
public static string credentials {
get {
return ResourceManager.GetString("credentials", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Manage your credentials.
/// </summary>
public static string credentials_description {
get {
return ResourceManager.GetString("credentials_description", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Description.
/// </summary>
public static string description {
get {
return ResourceManager.GetString("description", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll credentials.
/// </summary>
public static string enroll_credentials {
get {
return ResourceManager.GetString("enroll_credentials", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Link one or more external accounts to your profile.
/// </summary>
public static string external_accounts_description {
get {
return ResourceManager.GetString("external_accounts_description", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à External accounts.
/// </summary>
public static string external_accounts_title {
get {
return ResourceManager.GetString("external_accounts_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Grant datetime.
/// </summary>
public static string grant_time {
get {
return ResourceManager.GetString("grant_time", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Name.
/// </summary>
public static string name {
get {
return ResourceManager.GetString("name", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à All the credentials have been enrolled.
/// </summary>
public static string no_credentials_to_create {
get {
return ResourceManager.GetString("no_credentials_to_create", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no credential to update.
/// </summary>
public static string no_credentials_to_update {
get {
return ResourceManager.GetString("no_credentials_to_update", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no external account configured.
/// </summary>
public static string no_external_accounts {
get {
return ResourceManager.GetString("no_external_accounts", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à One Time Password is not configured.
/// </summary>
public static string no_otp {
get {
return ResourceManager.GetString("no_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no pending request.
/// </summary>
public static string no_pending_request {
get {
return ResourceManager.GetString("no_pending_request", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Users have requested access to some of your resources. Click on &apos;Revoke Access&apos; to deny pending requests..
/// </summary>
public static string pending_request_description {
get {
return ResourceManager.GetString("pending_request_description", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Pending requests.
/// </summary>
public static string pending_request_title {
get {
return ResourceManager.GetString("pending_request_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à One Time Password.
/// </summary>
public static string qrcode_otp {
get {
return ResourceManager.GetString("qrcode_otp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Requester.
/// </summary>
public static string requester {
get {
return ResourceManager.GetString("requester", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Resource.
/// </summary>
public static string resource {
get {
return ResourceManager.GetString("resource", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Revoke access.
/// </summary>
public static string revoke_access {
get {
return ResourceManager.GetString("revoke_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Scopes.
/// </summary>
public static string scopes {
get {
return ResourceManager.GetString("scopes", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Subject.
/// </summary>
public static string subject {
get {
return ResourceManager.GetString("subject", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Profile.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Unlink.
/// </summary>
public static string unlink {
get {
return ResourceManager.GetString("unlink", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update your credentials.
/// </summary>
public static string update_your_credentials {
get {
return ResourceManager.GetString("update_your_credentials", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,219 @@
<?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="accept_access" xml:space="preserve">
<value>Accept</value>
</data>
<data name="account_login" xml:space="preserve">
<value>Login</value>
</data>
<data name="account_name" xml:space="preserve">
<value>Name</value>
</data>
<data name="approved_apps_description" xml:space="preserve">
<value>These apps have been granted access to interact with your SimpleIdServer account. To prevent them from accessing it in the future, click on 'Revoke Access'</value>
</data>
<data name="approved_apps_title" xml:space="preserve">
<value>Approved applications</value>
</data>
<data name="auth_details" xml:space="preserve">
<value>Authorization Details</value>
</data>
<data name="claims" xml:space="preserve">
<value>Claims</value>
</data>
<data name="client" xml:space="preserve">
<value>Client</value>
</data>
<data name="created_at" xml:space="preserve">
<value>Created at</value>
</data>
<data name="credentials" xml:space="preserve">
<value>Credentials</value>
</data>
<data name="credentials_description" xml:space="preserve">
<value>Manage your credentials</value>
</data>
<data name="description" xml:space="preserve">
<value>Description</value>
</data>
<data name="enroll_credentials" xml:space="preserve">
<value>Enroll credentials</value>
</data>
<data name="external_accounts_description" xml:space="preserve">
<value>Link one or more external accounts to your profile</value>
</data>
<data name="external_accounts_title" xml:space="preserve">
<value>External accounts</value>
</data>
<data name="grant_time" xml:space="preserve">
<value>Grant datetime</value>
</data>
<data name="name" xml:space="preserve">
<value>Name</value>
</data>
<data name="no_credentials_to_create" xml:space="preserve">
<value>All the credentials have been enrolled</value>
</data>
<data name="no_credentials_to_update" xml:space="preserve">
<value>There is no credential to update</value>
</data>
<data name="no_external_accounts" xml:space="preserve">
<value>There is no external account configured</value>
</data>
<data name="no_otp" xml:space="preserve">
<value>One Time Password is not configured</value>
</data>
<data name="no_pending_request" xml:space="preserve">
<value>There is no pending request</value>
</data>
<data name="pending_request_description" xml:space="preserve">
<value>Users have requested access to some of your resources. Click on 'Revoke Access' to deny pending requests.</value>
</data>
<data name="pending_request_title" xml:space="preserve">
<value>Pending requests</value>
</data>
<data name="qrcode_otp" xml:space="preserve">
<value>One Time Password</value>
</data>
<data name="requester" xml:space="preserve">
<value>Requester</value>
</data>
<data name="resource" xml:space="preserve">
<value>Resource</value>
</data>
<data name="revoke_access" xml:space="preserve">
<value>Revoke access</value>
</data>
<data name="scopes" xml:space="preserve">
<value>Scopes</value>
</data>
<data name="subject" xml:space="preserve">
<value>Subject</value>
</data>
<data name="title" xml:space="preserve">
<value>Profile</value>
</data>
<data name="unlink" xml:space="preserve">
<value>Unlink</value>
</data>
<data name="update_your_credentials" xml:space="preserve">
<value>Update your credentials</value>
</data>
</root>

View File

@@ -0,0 +1,252 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class RegisterEmailResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal RegisterEmailResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.RegisterEmailResource", typeof(RegisterEmailResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Action is missing.
/// </summary>
public static string action_missing {
get {
return ResourceManager.GetString("action_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Create.
/// </summary>
public static string create {
get {
return ResourceManager.GetString("create", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email.
/// </summary>
public static string email {
get {
return ResourceManager.GetString("email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is enrolled.
/// </summary>
public static string email_is_enrolled {
get {
return ResourceManager.GetString("email_is_enrolled", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Action is invalid.
/// </summary>
public static string invalid_action {
get {
return ResourceManager.GetString("invalid_action", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is not correct.
/// </summary>
public static string invalid_confirmation_code {
get {
return ResourceManager.GetString("invalid_confirmation_code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The email is invalid.
/// </summary>
public static string invalid_email {
get {
return ResourceManager.GetString("invalid_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is missing.
/// </summary>
public static string otpcode_missing {
get {
return ResourceManager.GetString("otpcode_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is not a number.
/// </summary>
public static string otpcode_not_number {
get {
return ResourceManager.GetString("otpcode_not_number", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is sent.
/// </summary>
public static string otpcode_sent {
get {
return ResourceManager.GetString("otpcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register a user.
/// </summary>
public static string register_email {
get {
return ResourceManager.GetString("register_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send confirmation code.
/// </summary>
public static string sendconfirmationcode {
get {
return ResourceManager.GetString("sendconfirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update.
/// </summary>
public static string update {
get {
return ResourceManager.GetString("update", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update your email.
/// </summary>
public static string update_email {
get {
return ResourceManager.GetString("update_email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same name already exists.
/// </summary>
public static string user_exists {
get {
return ResourceManager.GetString("user_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User is created.
/// </summary>
public static string user_is_created {
get {
return ResourceManager.GetString("user_is_created", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same email already exists.
/// </summary>
public static string value_exists {
get {
return ResourceManager.GetString("value_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Email is missing.
/// </summary>
public static string value_missing {
get {
return ResourceManager.GetString("value_missing", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,183 @@
<?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="action_missing" xml:space="preserve">
<value>Action is missing</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="create" xml:space="preserve">
<value>Create</value>
</data>
<data name="email" xml:space="preserve">
<value>Email</value>
</data>
<data name="email_is_enrolled" xml:space="preserve">
<value>Email is enrolled</value>
</data>
<data name="invalid_action" xml:space="preserve">
<value>Action is invalid</value>
</data>
<data name="invalid_confirmation_code" xml:space="preserve">
<value>Confirmation code is not correct</value>
</data>
<data name="invalid_email" xml:space="preserve">
<value>The email is invalid</value>
</data>
<data name="otpcode_missing" xml:space="preserve">
<value>Confirmation code is missing</value>
</data>
<data name="otpcode_not_number" xml:space="preserve">
<value>Confirmation code is not a number</value>
</data>
<data name="otpcode_sent" xml:space="preserve">
<value>Confirmation code is sent</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="register_email" xml:space="preserve">
<value>Register a user</value>
</data>
<data name="sendconfirmationcode" xml:space="preserve">
<value>Send confirmation code</value>
</data>
<data name="title" xml:space="preserve">
<value>Register</value>
</data>
<data name="update" xml:space="preserve">
<value>Update</value>
</data>
<data name="update_email" xml:space="preserve">
<value>Update your email</value>
</data>
<data name="user_exists" xml:space="preserve">
<value>User with the same name already exists</value>
</data>
<data name="user_is_created" xml:space="preserve">
<value>User is created</value>
</data>
<data name="value_exists" xml:space="preserve">
<value>User with the same email already exists</value>
</data>
<data name="value_missing" xml:space="preserve">
<value>Email is missing</value>
</data>
</root>

207
Resources/RegisterPwdResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,207 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class RegisterPwdResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal RegisterPwdResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.RegisterPwdResource", typeof(RegisterPwdResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation password.
/// </summary>
public static string confirmed_password {
get {
return ResourceManager.GetString("confirmed_password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmed password is missing.
/// </summary>
public static string confirmed_password_missing {
get {
return ResourceManager.GetString("confirmed_password_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Create.
/// </summary>
public static string create {
get {
return ResourceManager.GetString("create", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The reset link is invalid.
/// </summary>
public static string InvalidResetLink {
get {
return ResourceManager.GetString("InvalidResetLink", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is missing.
/// </summary>
public static string login_missing {
get {
return ResourceManager.GetString("login_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password.
/// </summary>
public static string password {
get {
return ResourceManager.GetString("password", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password is missing.
/// </summary>
public static string password_missing {
get {
return ResourceManager.GetString("password_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Mismatch between the password and the confirmed password.
/// </summary>
public static string password_no_match {
get {
return ResourceManager.GetString("password_no_match", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Password is updated.
/// </summary>
public static string pwd_updated {
get {
return ResourceManager.GetString("pwd_updated", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register the user.
/// </summary>
public static string register_pwd {
get {
return ResourceManager.GetString("register_pwd", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register_title {
get {
return ResourceManager.GetString("register_title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update.
/// </summary>
public static string update {
get {
return ResourceManager.GetString("update", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update your password.
/// </summary>
public static string update_pwd {
get {
return ResourceManager.GetString("update_pwd", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User is created.
/// </summary>
public static string user_created {
get {
return ResourceManager.GetString("user_created", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same name already exists.
/// </summary>
public static string user_exists {
get {
return ResourceManager.GetString("user_exists", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,168 @@
<?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="confirmed_password" xml:space="preserve">
<value>Confirmation password</value>
</data>
<data name="confirmed_password_missing" xml:space="preserve">
<value>Confirmed password is missing</value>
</data>
<data name="create" xml:space="preserve">
<value>Create</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="login_missing" xml:space="preserve">
<value>Login is missing</value>
</data>
<data name="password" xml:space="preserve">
<value>Password</value>
</data>
<data name="password_missing" xml:space="preserve">
<value>Password is missing</value>
</data>
<data name="password_no_match" xml:space="preserve">
<value>Mismatch between the password and the confirmed password</value>
</data>
<data name="pwd_updated" xml:space="preserve">
<value>Password is updated</value>
</data>
<data name="register_pwd" xml:space="preserve">
<value>Register the user</value>
</data>
<data name="register_title" xml:space="preserve">
<value>Register</value>
</data>
<data name="update" xml:space="preserve">
<value>Update</value>
</data>
<data name="update_pwd" xml:space="preserve">
<value>Update your password</value>
</data>
<data name="user_created" xml:space="preserve">
<value>User is created</value>
</data>
<data name="user_exists" xml:space="preserve">
<value>User with the same name already exists</value>
</data>
<data name="InvalidResetLink" xml:space="preserve">
<value>The reset link is invalid</value>
</data>
</root>

243
Resources/RegisterSmsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,243 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class RegisterSmsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal RegisterSmsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.RegisterSmsResource", typeof(RegisterSmsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Action is missing.
/// </summary>
public static string action_missing {
get {
return ResourceManager.GetString("action_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code.
/// </summary>
public static string confirmationcode {
get {
return ResourceManager.GetString("confirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Create.
/// </summary>
public static string create {
get {
return ResourceManager.GetString("create", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Action is invalid.
/// </summary>
public static string invalid_action {
get {
return ResourceManager.GetString("invalid_action", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is not correct.
/// </summary>
public static string invalid_confirmation_code {
get {
return ResourceManager.GetString("invalid_confirmation_code", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is missing.
/// </summary>
public static string otpcode_missing {
get {
return ResourceManager.GetString("otpcode_missing", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is not a number.
/// </summary>
public static string otpcode_not_number {
get {
return ResourceManager.GetString("otpcode_not_number", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Confirmation code is sent.
/// </summary>
public static string otpcode_sent {
get {
return ResourceManager.GetString("otpcode_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number.
/// </summary>
public static string phonenumber {
get {
return ResourceManager.GetString("phonenumber", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register a user.
/// </summary>
public static string register_sms {
get {
return ResourceManager.GetString("register_sms", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send confirmation code.
/// </summary>
public static string sendconfirmationcode {
get {
return ResourceManager.GetString("sendconfirmationcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number is enrolled.
/// </summary>
public static string sms_is_enrolled {
get {
return ResourceManager.GetString("sms_is_enrolled", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Update.
/// </summary>
public static string update {
get {
return ResourceManager.GetString("update", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll your phone.
/// </summary>
public static string update_sms {
get {
return ResourceManager.GetString("update_sms", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same name already exists.
/// </summary>
public static string user_exists {
get {
return ResourceManager.GetString("user_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User is created.
/// </summary>
public static string user_is_created {
get {
return ResourceManager.GetString("user_is_created", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à User with the same phone number already exists.
/// </summary>
public static string value_exists {
get {
return ResourceManager.GetString("value_exists", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Phone number is missing.
/// </summary>
public static string value_missing {
get {
return ResourceManager.GetString("value_missing", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,180 @@
<?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="action_missing" xml:space="preserve">
<value>Action is missing</value>
</data>
<data name="confirmationcode" xml:space="preserve">
<value>Confirmation code</value>
</data>
<data name="create" xml:space="preserve">
<value>Create</value>
</data>
<data name="invalid_action" xml:space="preserve">
<value>Action is invalid</value>
</data>
<data name="invalid_confirmation_code" xml:space="preserve">
<value>Confirmation code is not correct</value>
</data>
<data name="otpcode_missing" xml:space="preserve">
<value>Confirmation code is missing</value>
</data>
<data name="otpcode_not_number" xml:space="preserve">
<value>Confirmation code is not a number</value>
</data>
<data name="otpcode_sent" xml:space="preserve">
<value>Confirmation code is sent</value>
</data>
<data name="phonenumber" xml:space="preserve">
<value>Phone number</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="register_sms" xml:space="preserve">
<value>Register a user</value>
</data>
<data name="sendconfirmationcode" xml:space="preserve">
<value>Send confirmation code</value>
</data>
<data name="sms_is_enrolled" xml:space="preserve">
<value>Phone number is enrolled</value>
</data>
<data name="title" xml:space="preserve">
<value>Register</value>
</data>
<data name="update" xml:space="preserve">
<value>Update</value>
</data>
<data name="update_sms" xml:space="preserve">
<value>Enroll your phone</value>
</data>
<data name="user_exists" xml:space="preserve">
<value>User with the same name already exists</value>
</data>
<data name="user_is_created" xml:space="preserve">
<value>User is created</value>
</data>
<data name="value_exists" xml:space="preserve">
<value>User with the same phone number already exists</value>
</data>
<data name="value_missing" xml:space="preserve">
<value>Phone number is missing</value>
</data>
</root>

108
Resources/RegisterVpResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,108 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class RegisterVpResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal RegisterVpResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.RegisterVpResource", typeof(RegisterVpResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Verifiable credentials are enrolled.
/// </summary>
public static string credential_added {
get {
return ResourceManager.GetString("credential_added", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Enroll your verifiable credentials.
/// </summary>
public static string enroll_vp {
get {
return ResourceManager.GetString("enroll_vp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string register {
get {
return ResourceManager.GetString("register", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à QR code.
/// </summary>
public static string scan_mobileapp {
get {
return ResourceManager.GetString("scan_mobileapp", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Register.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,135 @@
<?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="credential_added" xml:space="preserve">
<value>Verifiable credentials are enrolled</value>
</data>
<data name="enroll_vp" xml:space="preserve">
<value>Enroll your verifiable credentials</value>
</data>
<data name="register" xml:space="preserve">
<value>Register</value>
</data>
<data name="scan_mobileapp" xml:space="preserve">
<value>QR code</value>
</data>
<data name="title" xml:space="preserve">
<value>Register</value>
</data>
</root>

View File

@@ -0,0 +1,153 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ResetPasswordResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ResetPasswordResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ResetPasswordResource", typeof(ResetPasswordResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à An unexpected exception occurred while trying to send the verification code.
/// </summary>
public static string cannot_send_otpcode {
get {
return ResourceManager.GetString("cannot_send_otpcode", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The destination doesn&apos;t match with yours.
/// </summary>
public static string invalid_destination {
get {
return ResourceManager.GetString("invalid_destination", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login.
/// </summary>
public static string login {
get {
return ResourceManager.GetString("login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The destination is not configured in your account.
/// </summary>
public static string missing_destination {
get {
return ResourceManager.GetString("missing_destination", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Login is required.
/// </summary>
public static string missing_login {
get {
return ResourceManager.GetString("missing_login", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Destination is required.
/// </summary>
public static string missing_value {
get {
return ResourceManager.GetString("missing_value", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The reset link has been sent. Please check your {0}.
/// </summary>
public static string reset_link_sent {
get {
return ResourceManager.GetString("reset_link_sent", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Send link.
/// </summary>
public static string send_link {
get {
return ResourceManager.GetString("send_link", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Reset your password.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à The login is invalid.
/// </summary>
public static string unknown_user {
get {
return ResourceManager.GetString("unknown_user", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,150 @@
<?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="cannot_send_otpcode" xml:space="preserve">
<value>An unexpected exception occurred while trying to send the verification code</value>
</data>
<data name="invalid_destination" xml:space="preserve">
<value>The destination doesn't match with yours</value>
</data>
<data name="login" xml:space="preserve">
<value>Login</value>
</data>
<data name="missing_destination" xml:space="preserve">
<value>The destination is not configured in your account</value>
</data>
<data name="missing_login" xml:space="preserve">
<value>Login is required</value>
</data>
<data name="missing_value" xml:space="preserve">
<value>Destination is required</value>
</data>
<data name="reset_link_sent" xml:space="preserve">
<value>The reset link has been sent. Please check your {0}</value>
</data>
<data name="send_link" xml:space="preserve">
<value>Send link</value>
</data>
<data name="title" xml:space="preserve">
<value>Reset your password</value>
</data>
<data name="unknown_user" xml:space="preserve">
<value>The login is invalid</value>
</data>
</root>

117
Resources/ScopesResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,117 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class ScopesResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal ScopesResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.ScopesResource", typeof(ScopesResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Access to the address.
/// </summary>
public static string address {
get {
return ResourceManager.GetString("address", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Access to the email.
/// </summary>
public static string email {
get {
return ResourceManager.GetString("email", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Offline access.
/// </summary>
public static string offline_access {
get {
return ResourceManager.GetString("offline_access", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Access to user identifier.
/// </summary>
public static string openid {
get {
return ResourceManager.GetString("openid", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Access to the phone.
/// </summary>
public static string phone {
get {
return ResourceManager.GetString("phone", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Access to the profile.
/// </summary>
public static string profile {
get {
return ResourceManager.GetString("profile", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,138 @@
<?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="address" xml:space="preserve">
<value>Access to the address</value>
</data>
<data name="email" xml:space="preserve">
<value>Access to the email</value>
</data>
<data name="offline_access" xml:space="preserve">
<value>Offline access</value>
</data>
<data name="openid" xml:space="preserve">
<value>Access to user identifier</value>
</data>
<data name="phone" xml:space="preserve">
<value>Access to the phone</value>
</data>
<data name="profile" xml:space="preserve">
<value>Access to the profile</value>
</data>
</root>

99
Resources/SessionsResource.Designer.cs generated Normal file
View File

@@ -0,0 +1,99 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Ce code a été généré par un outil.
// Version du runtime :4.0.30319.42000
//
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
// le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SimpleIdp.Resources {
using System;
/// <summary>
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
/// </summary>
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
// avec l'option /str ou régénérez votre projet VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class SessionsResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal SessionsResource() {
}
/// <summary>
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleIdp.Resources.SessionsResource", typeof(SessionsResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à There is no session.
/// </summary>
public static string no_session {
get {
return ResourceManager.GetString("no_session", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Sessions in the realm &apos;{0}&apos;.
/// </summary>
public static string realm {
get {
return ResourceManager.GetString("realm", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Revoke.
/// </summary>
public static string revoke {
get {
return ResourceManager.GetString("revoke", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Choose a session.
/// </summary>
public static string title {
get {
return ResourceManager.GetString("title", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,132 @@
<?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="title" xml:space="preserve">
<value>Choose a session</value>
</data>
<data name="realm" xml:space="preserve">
<value>Sessions in the realm '{0}'</value>
</data>
<data name="revoke" xml:space="preserve">
<value>Revoke</value>
</data>
<data name="no_session" xml:space="preserve">
<value>There is no session</value>
</data>
</root>

242
SimpleIdp.csproj Normal file
View File

@@ -0,0 +1,242 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<OutputType>Exe</OutputType>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.3.0" />
<PackageReference Include="SimpleIdServer.IdServer.Pwd" Version="6.0.*-*" />
<PackageReference Include="SimpleIdServer.IdServer" Version="6.0.*-*" />
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\AccountsResource.Designer.cs">
<DependentUpon>AccountsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateConsoleResource.Designer.cs">
<DependentUpon>AuthenticateConsoleResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateEmailResource.Designer.cs">
<DependentUpon>AuthenticateEmailResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateMobileResource.Designer.cs">
<DependentUpon>AuthenticateMobileResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateOtpResource.Designer.cs">
<DependentUpon>AuthenticateOtpResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticatePasswordResource.Designer.cs">
<DependentUpon>AuthenticatePasswordResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateSmsResource.Designer.cs">
<DependentUpon>AuthenticateSmsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\AuthenticateWebauthnResource.Designer.cs">
<DependentUpon>AuthenticateWebauthnResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\BCConsentsResource.Designer.cs">
<DependentUpon>BCConsentsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\CheckSessionResource.Designer.cs">
<DependentUpon>CheckSessionResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ConfirmResetPasswordResource.Designer.cs">
<DependentUpon>ConfirmResetPasswordResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ConsentsResource.Designer.cs">
<DependentUpon>ConsentsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\CredentialsResource.Designer.cs">
<DependentUpon>CredentialsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\DeviceCodeResource.Designer.cs">
<DependentUpon>DeviceCodeResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ErrorsResource.Designer.cs">
<DependentUpon>ErrorsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\HomeResource.Designer.cs">
<DependentUpon>HomeResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\LayoutResource.Designer.cs">
<DependentUpon>LayoutResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ProfileResource.Designer.cs">
<DependentUpon>ProfileResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\RegisterEmailResource.Designer.cs">
<DependentUpon>RegisterEmailResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\RegisterPwdResource.Designer.cs">
<DependentUpon>RegisterPwdResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\RegisterSmsResource.Designer.cs">
<DependentUpon>RegisterSmsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\RegisterVpResource.Designer.cs">
<DependentUpon>RegisterVpResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ResetPasswordResource.Designer.cs">
<DependentUpon>ResetPasswordResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\ScopesResource.Designer.cs">
<DependentUpon>ScopesResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Update="Resources\SessionsResource.Designer.cs">
<DependentUpon>SessionsResource.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\AccountsResource.resx">
<LastGenOutput>AccountsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateConsoleResource.resx">
<LastGenOutput>AuthenticateConsoleResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateEmailResource.resx">
<LastGenOutput>AuthenticateEmailResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateMobileResource.resx">
<LastGenOutput>AuthenticateMobileResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateOtpResource.resx">
<LastGenOutput>AuthenticateOtpResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticatePasswordResource.resx">
<LastGenOutput>AuthenticatePasswordResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateSmsResource.resx">
<LastGenOutput>AuthenticateSmsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\AuthenticateWebauthnResource.resx">
<LastGenOutput>AuthenticateWebauthnResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\BCConsentsResource.resx">
<LastGenOutput>BCConsentsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\CheckSessionResource.resx">
<LastGenOutput>CheckSessionResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ConfirmResetPasswordResource.resx">
<LastGenOutput>ConfirmResetPasswordResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ConsentsResource.resx">
<LastGenOutput>ConsentsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\CredentialsResource.resx">
<LastGenOutput>CredentialsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\DeviceCodeResource.resx">
<LastGenOutput>DeviceCodeResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ErrorsResource.resx">
<LastGenOutput>ErrorsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\HomeResource.resx">
<LastGenOutput>HomeResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\LayoutResource.resx">
<LastGenOutput>LayoutResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ProfileResource.resx">
<LastGenOutput>ProfileResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\RegisterEmailResource.resx">
<LastGenOutput>RegisterEmailResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\RegisterPwdResource.resx">
<LastGenOutput>RegisterPwdResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\RegisterSmsResource.resx">
<LastGenOutput>RegisterSmsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\RegisterVpResource.resx">
<LastGenOutput>RegisterVpResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ResetPasswordResource.resx">
<LastGenOutput>ResetPasswordResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\ScopesResource.resx">
<LastGenOutput>ScopesResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resources\SessionsResource.resx">
<LastGenOutput>SessionsResource.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
</ItemGroup>
</Project>

24
SimpleIdp.sln Normal file
View File

@@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleIdp", "SimpleIdp.csproj", "{C962C62B-F4DA-ED13-F4C4-819534040A9C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C962C62B-F4DA-ED13-F4C4-819534040A9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C962C62B-F4DA-ED13-F4C4-819534040A9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C962C62B-F4DA-ED13-F4C4-819534040A9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C962C62B-F4DA-ED13-F4C4-819534040A9C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D8E51D12-5648-428D-B777-ABC8AA37C956}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,69 @@
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.AccountsIndexViewModel
@{
ViewBag.Title = AccountsResource.select_session;
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>@AccountsResource.active_sessions</h1>
@if (!string.IsNullOrWhiteSpace(ViewBag.IsUserAccountSwitched))
{
<div class="alert alert-success">@AccountsResource.useraccount_switched</div>
}
@if (!string.IsNullOrWhiteSpace(ViewBag.IsSessionRejected))
{
<div class="alert alert-success">@AccountsResource.useraccount_rejected</div>
}
<div class="row">
@{
int i = 0;
foreach (var account in Model.Accounts)
{
i++;
string rejectFormId = "reject-" + i;
<div class="col-md-4">
@using (Html.BeginForm("Index", "Accounts", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="card">
<input type="hidden" name="AccountName" value="@account.Name" />
<input type="hidden" name="ReturnUrl" value="@Model.ReturnUrl" />
<input type="hidden" name="Action" value="Choose" />
<div class="card-header">@account.Name</div>
<div class="card-body">
@if (account.IssuedUtc != null)
{
<p>
@string.Format(AccountsResource.authentication_time, account.IssuedUtc.Value.ToString("s"))
</p>
}
@if (account.ExpiresUct != null)
{
<p>
@string.Format(AccountsResource.expiration_time, account.ExpiresUct.Value.ToString("s"))
</p>
}
</div>
<div class="card-footer d-flex justify-content-between">
<input type="submit" class="btn btn-primary" value="@AccountsResource.choose_session" />
<input type="submit" class="btn btn-danger" form="@rejectFormId" value="@AccountsResource.reject" />
</div>
</div>
}
@using (Html.BeginForm("Index", "Accounts", FormMethod.Post, new { id = rejectFormId }))
{
@Html.AntiForgeryToken()
<input type="hidden" name="AccountName" value="@account.Name" />
<input type="hidden" name="ReturnUrl" value="@Model.ReturnUrl" />
<input type="hidden" name="Action" value="Reject" />
}
</div>
}
}
</div>

View File

@@ -0,0 +1,74 @@
@using SimpleIdp.Resources
@using SimpleIdServer.IdServer.UI.ViewModels
@model SimpleIdServer.IdServer.UI.ViewModels.BCConsentsIndexViewModel
@{
ViewBag.Title = LayoutResource.consents;
Layout = "~/Views/Shared/_CommonLayout.cshtml";
}
<div class="consentContainer">
<div class="card consent">
<div class="card-body">
@if(Model.IsConfirmed)
{
<div class="alert alert-success">
@(Model.ConfirmationStatus == ConfirmationStatus.CONFIRMED ? BCConsentsResource.consent_confirmed : BCConsentsResource.consent_rejected)
</div>
}
else
{
<form method="post" action="@Url.Action("Reject", "BackChannelConsents")" id="rejectForm">
@Html.AntiForgeryToken()
<input name="ReturnUrl" type="hidden" value="@Model.ReturnUrl" />
<input name="IsRejected" type="hidden" value="true" />
</form>
@using (Html.BeginForm("Index", "BackChannelConsents", FormMethod.Post))
{
@Html.AntiForgeryToken()
@if (!ViewData.ModelState.IsValid)
{
<ul class="list-group">
@foreach (var modelState in ViewData.ModelState.Values)
{
foreach (var error in modelState.Errors)
{
<li class="list-group-item list-group-item-danger">@BCConsentsResource.ResourceManager.GetString(error.ErrorMessage)</li>
}
}
</ul>
}
<input type="hidden" value="@Model.ReturnUrl" name="ReturnUrl" />
<input name="IsRejected" type="hidden" value="false" />
<h5>@string.Format(BCConsentsResource.consent_client_access, Model.ClientName)</h5>
<ul class="list-group">
@if (!string.IsNullOrWhiteSpace(Model.BindingMessage))
{
<li class="list-group-item"><b>@BCConsentsResource.message</b> : @Model.BindingMessage</li>
}
@if(Model.Scopes == null || !Model.Scopes.Any())
{
<li class="list-group-item"><b>@BCConsentsResource.scopes</b> : @string.Join(",", Model.Scopes)</li>
}
@if(Model.AuthorizationDetails != null && Model.AuthorizationDetails.Any())
{
foreach(var authDetail in Model.AuthorizationDetails)
{
<li class="list-group-item"><b>@authDetail.Type</b> : @string.Join(",", authDetail.Actions)</li>
}
}
</ul>
<div>
<button type="submit" class="btn btn-success card-link">@BCConsentsResource.confirm</button>
<button type="submit" form="rejectForm" class="btn btn-danger">@BCConsentsResource.reject</button>
</div>
}
}
</div>
</div>
</div>

View File

@@ -0,0 +1,41 @@
@using Microsoft.Extensions.Options;
@using SimpleIdServer.IdServer.Options;
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.RevokeSessionViewModel
@inject IOptions<IdServerHostOptions> options
@{
ViewBag.Title = CheckSessionResource.revoke_session_title;
Layout = "~/Views/Shared/_Layout.cshtml";
}
@foreach (var frontChannelLogout in Model.FrontChannelLogouts)
{
<iframe src="@frontChannelLogout" style="display: none"></iframe>
}
@if(Model.RedirectToRevokeSessionUI)
{
<a href="@Model.RevokeSessionCallbackUrl" class="btn btn-danger">@CheckSessionResource.revoke_session_title</a>
}
else
{
<div class="alert alert-info">
<p>@string.Format(CheckSessionResource.session_being_revoked, (options.Value.EndSessionRedirectionTimeInMS / 1000))</p>
</div>
}
@section Scripts {
<script type="text/javascript">
$(document).ready(function() {
var isRedirected = '@Model.RedirectToRevokeSessionUI.ToString().ToLowerInvariant()' == 'false';
var callback = '@Html.Raw(Model.RevokeSessionCallbackUrl)';
var timeMS = parseInt('@options.Value.EndSessionRedirectionTimeInMS');
if(isRedirected) {
setTimeout(() => {
window.location.replace(callback);
}, timeMS);
}
})
</script>
}

View File

@@ -0,0 +1,92 @@
@using SimpleIdServer.IdServer.DTOs
@using SimpleIdServer.IdServer.Domains;
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.ConsentsIndexViewModel
@{
ViewBag.Title = LayoutResource.consents;
Layout = "~/Views/Shared/_CommonLayout.cshtml";
}
<div class="consentContainer">
<div class="card consent">
<div class="card-body">
<!-- Rejection form -->
<form method="post" action="@Url.Action("Reject", "Consents")" id="rejectForm">
@Html.AntiForgeryToken()
<input name="ReturnUrl" type="hidden" value="@Model.ReturnUrl" />
</form>
<div class="consentinfo">
<div class="img">
@Html.UserPicture(User)
</div>
<div class="separator"></div>
<div class="img">
@Html.ClientPicture(Model.PictureUri)
</div>
</div>
<!-- Confirmation form -->
@using (Html.BeginForm("Index", "Consents", FormMethod.Post))
{
@Html.AntiForgeryToken()
@if (!ViewData.ModelState.IsValid)
{
<ul class="list-group">
@foreach (var modelState in ViewData.ModelState.Values)
{
foreach (var error in modelState.Errors)
{
<li class="list-group-item list-group-item-danger">@ConsentsResource.ResourceManager.GetString(error.ErrorMessage)</li>
}
}
</ul>
}
<input type="hidden" name="ReturnUrl" value="@Model.ReturnUrl" />
<h5>@string.Format(ConsentsResource.consent_client_access, Model.ClientName)</h5>
<ul class="list-group">
@if(Model.ScopeNames != null && Model.ScopeNames.Any())
{
<li class="list-group-item"><b>@ConsentsResource.scopes</b> : @string.Join(",", Model.ScopeNames)</li>
}
@if(Model.ClaimNames != null && Model.ClaimNames.Any())
{
<li class="list-group-item"><b>@ConsentsResource.claims</b> : @string.Join(",", Model.ClaimNames)</li>
}
@if (Model.AuthorizationDetails != null && Model.AuthorizationDetails.Any())
{
foreach (var authDetail in Model.AuthorizationDetails)
{
if (authDetail.Type == AuthorizationDetailsNames.OpenIdCredential)
{
}
else
{
<li class="list-group-item">
<b>@authDetail.Type</b> : @string.Join(",", authDetail.Actions)
@if (authDetail.Locations != null && authDetail.Locations.Any())
{
<ul class="list-group">
@foreach (var location in authDetail.Locations)
{
<li class="list-group-item">@location</li>
}
</ul>
}
</li>
}
}
}
</ul>
<div>
<button type="submit" class="btn btn-success card-link">@ConsentsResource.confirm</button>
<button type="submit" form="rejectForm" class="btn btn-danger">@ConsentsResource.reject</button>
</div>
}
</div>
</div>
</div>

66
Views/Device/Index.cshtml Normal file
View File

@@ -0,0 +1,66 @@
@using SimpleIdServer.IdServer.Domains;
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.DeviceCodeViewModel
@{
ViewBag.Title = LayoutResource.deviceauth;
Layout = "~/Views/Shared/_CommonLayout.cshtml";
}
<div class="consentContainer">
<div class="card consent">
<div class="card-body">
@if(Model.IsConfirmed)
{
<div class="alert alert-success">
@DeviceCodeResource.confirmed
</div>
}
else
{
<div class="consentinfo">
<div class="img">
@Html.UserPicture(User)
</div>
<div class="separator"></div>
<div class="img">
@Html.ClientPicture(Model.PictureUri)
</div>
</div>
<!-- Confirmation form -->
@using (Html.BeginForm("Index", "Device", FormMethod.Post))
{
@Html.AntiForgeryToken()
@if (!ViewData.ModelState.IsValid)
{
<ul class="list-group">
@foreach (var modelState in ViewData.ModelState.Values)
{
foreach (var error in modelState.Errors)
{
<li class="list-group-item list-group-item-danger">@DeviceCodeResource.ResourceManager.GetString(error.ErrorMessage)</li>
}
}
</ul>
}
<h5>@string.Format(DeviceCodeResource.consent_client_access, Model.ClientName)</h5>
<ul class="list-group">
@if (Model.Scopes != null && Model.Scopes.Any())
{
<li class="list-group-item"><b>@DeviceCodeResource.scopes</b> : @string.Join(",", Model.Scopes)</li>
}
</ul>
<div class="input-group mb-3 mt-3">
<input type="text" value="@Model.UserCode" name="UserCode" class="form-control" placeholder="@DeviceCodeResource.usercode">
</div>
<div>
<button type="submit" class="btn btn-success card-link">@DeviceCodeResource.confirm</button>
</div>
}
}
</div>
</div>
</div>

11
Views/Errors/Index.cshtml Normal file
View File

@@ -0,0 +1,11 @@
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.ErrorViewModel
@{
ViewBag.Title = "Error";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="alert alert-danger" role="alert">
@Model.Message
</div>

View File

@@ -0,0 +1,10 @@
@using SimpleIdp.Resources
@{
ViewBag.Title = "Error";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="alert alert-danger" role="alert">
@LayoutResource.UnexpectedError
</div>

View File

@@ -0,0 +1,17 @@
@using Microsoft.AspNetCore.Mvc.ApiExplorer;
@using SimpleIdp.Resources
@model SimpleIdServer.IdServer.UI.ViewModels.DisconnectViewModel
@{
ViewBag.Title = LayoutResource.Disconnected;
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h6>@LayoutResource.YouAreDisconnected</h6>
@foreach (var frontChannelLogout in Model.FrontChannelLogoutUrls)
{
<iframe src="@frontChannelLogout" style="display: none"></iframe>
}
<a href="@Url.Action("Index", "Home")" class="btn btn-primary mt-1">@LayoutResource.back</a>

7
Views/Home/Index.cshtml Normal file
View File

@@ -0,0 +1,7 @@
@using Microsoft.AspNetCore.Mvc.ApiExplorer;
@using SimpleIdp.Resources
@{
ViewBag.Title = HomeResource.home;
Layout = "~/Views/Shared/_Layout.cshtml";
}

287
Views/Home/Profile.cshtml Normal file
View File

@@ -0,0 +1,287 @@
@using Microsoft.AspNetCore.Http;
@using SimpleIdServer.IdServer.Domains;
@using SimpleIdp.Resources
@using System.Security.Claims;
@model SimpleIdServer.IdServer.UI.ViewModels.ProfileViewModel
@{
ViewBag.Title = ProfileResource.title;
Layout = "~/Views/Shared/_Layout.cshtml";
Func<string, string> getClaim = (str) =>
{
var cl = User.Claims.FirstOrDefault(c => c.Type == str);
if (cl == null) return "-";
return cl.Value;
};
var basePath = Context.Request.GetAbsoluteUriWithVirtualPath();
var returnUrl = $"{basePath}{Url.Action("Profile", "Home")}";
}
<div class="row profile gy-4">
<!-- User Information -->
<div class="col-md-3">
<div class="card shadow-sm">
<div class="card-body info">
<div class="picture">
@Html.UserPicture(User, Model.Picture, true)
<form id="pictureForm" action="@Url.Action("UpdatePicture", "Home")" method="post">
<input type="file" id="pictureFile" name="File" style="display: none" accept="image/*" />
</form>
</div>
<ul>
<!-- Name identifier -->
<li>
<h6>@ProfileResource.subject</h6>
<span class="text-muted">@getClaim(ClaimTypes.NameIdentifier)</span>
</li>
<!-- Name -->
<li>
<h6>@ProfileResource.name</h6>
<span class="text-muted">@User.Identity.Name</span>
</li>
<!-- OTP Key -->
<li>
<h6>@ProfileResource.qrcode_otp</h6>
@if (!Model.HasOtpKey)
{
<div class="alert alert-warning">@ProfileResource.no_otp</div>
}
else
{
<div>
<img src="@Url.Action("GetOTP", "Home")" width="200px" />
</div>
}
</li>
</ul>
</div>
</div>
</div>
<div class="col">
<div class="row gy-4">
<!-- OPENID Consents -->
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-body">
<h5>@ProfileResource.approved_apps_title</h5>
<p>@ProfileResource.approved_apps_description</p>
<table class="table table-striped">
<thead>
<tr>
<th></th>
<th>@ProfileResource.client</th>
<th>@ProfileResource.scopes</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var consent in Model.Consents.OrderBy(c => c.ClientName))
{
<tr>
<td>@Html.ClientPicture(consent.ClientUri)</td>
<td class="align-middle">@(string.IsNullOrWhiteSpace(consent.ClientName) ? '-' : consent.ClientName)</td>
<td class="align-middle">
@if(consent.ScopeNames != null && consent.ScopeNames.Any())
{
foreach(var scopeName in consent.ScopeNames)
{
<span class="badge bg-secondary">@scopeName</span>
}
}
else
{
<span>-</span>
}
</td>
<td class="align-middle">
<a href="@Url.Action("RejectConsent", "Home", new { consentId = consent.ConsentId })" class="btn btn-danger">@ProfileResource.revoke_access</a>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
<!-- Pending requests -->
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-body">
<h5>@ProfileResource.pending_request_title</h5>
<p>@ProfileResource.pending_request_description</p>
@if(Model.PendingRequests != null && Model.PendingRequests.Any())
{
<table class="table table-striped">
<thead>
<tr>
<th>@ProfileResource.resource</th>
<th>@ProfileResource.scopes</th>
<th>@ProfileResource.requester</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var consent in Model.PendingRequests.Where(p => p.Owner == getClaim(ClaimTypes.NameIdentifier) && p.Status == UMAPendingRequestStatus.TOBECONFIRMED).OrderByDescending(u => u.CreateDateTime))
{
<tr>
<td>@(string.IsNullOrWhiteSpace(consent.ResourceName) ? '-' : consent.ResourceName)</td>
<td>
@if(consent.Scopes != null && consent.Scopes.Any())
{
<span>-</span>
}
@foreach(var scope in consent.Scopes)
{
<span class="badge bg-secondary">@scope</span>
}
</td>
<td>@consent.Requester</td>
<td>
<a href="@Url.Action("RejectUmaPendingRequest", "Home", new { ticketId = consent.TicketId})" class="btn btn-danger">@ProfileResource.revoke_access</a>
<a href="@Url.Action("ConfirmUmaPendingRequest", "Home", new { ticketId = consent.TicketId})" class="btn btn-success">@ProfileResource.accept_access</a>
</td>
</tr>
}
</tbody>
</table>
}
else
{
<i>@ProfileResource.no_pending_request</i>
}
</div>
</div>
</div>
<!-- External accounts -->
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-body">
<h5>@ProfileResource.external_accounts_title</h5>
<p>@ProfileResource.external_accounts_description</p>
@if (Model.Profiles != null && Model.Profiles.Any())
{
<table class="table table-striped">
<thead>
<tr>
<th>@ProfileResource.account_name</th>
<th>@ProfileResource.account_login</th>
<th>@ProfileResource.created_at</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var externalAccount in Model.Profiles)
{
<tr>
<td>@externalAccount.Scheme</td>
<td>@externalAccount.Subject</td>
<td>@externalAccount.CreateDateTime.ToString("dd/M/yyyy HH:mm:ss")</td>
<td>
@using (Html.BeginForm("Unlink", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="hidden" value="@externalAccount.Subject" name="Subject" />
<input type="hidden" value="@externalAccount.Scheme" name="Scheme" />
<button type="submit" class="btn btn-danger">@ProfileResource.unlink</button>
}
</td>
</tr>
}
</tbody>
</table>
}
else
{
<i>@ProfileResource.no_external_accounts</i>
}
<div class="mt-2">
@foreach(var extProvider in Model.ExternalIdProviders)
{
<a class="btn btn-secondary me-1" href="@Url.Action("Link", "Home", new { scheme = extProvider.AuthenticationScheme, returnUrl = returnUrl })">
@extProvider.DisplayName
</a>
}
</div>
</div>
</div>
</div>
<!-- Manage credentials -->
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-body">
<h5>@ProfileResource.credentials</h5>
<div>
@if(Model.AuthenticationMethods != null && Model.AuthenticationMethods.Any(m => m.IsCredentialExists))
{
<p>@ProfileResource.update_your_credentials</p>
foreach(var authenticationMethod in Model.AuthenticationMethods.Where(m => m.IsCredentialExists))
{
<a class="btn btn-secondary me-1" href="@Url.Action("RegisterCredential", "Home", new { name = authenticationMethod.Amr, redirectUrl = returnUrl })">
@authenticationMethod.Name
</a>
}
}
else
{
<p>@ProfileResource.no_credentials_to_update</p>
}
</div>
<div>
@if(Model.AuthenticationMethods != null && Model.AuthenticationMethods.Any(m => !m.IsCredentialExists))
{
<p>@ProfileResource.enroll_credentials</p>
foreach (var authenticationMethod in Model.AuthenticationMethods.Where(m => !m.IsCredentialExists))
{
<a class="btn btn-secondary me-1" href="@Url.Action("RegisterCredential", "Home", new { name = authenticationMethod.Amr, redirectUrl = returnUrl })">
@authenticationMethod.Name
</a>
}
}
else
{
<p>@ProfileResource.no_credentials_to_create</p>
}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section Scripts {
<script type="text/javascript">
$(document).ready(function () {
$("#pictureFile").on("change", function (e) {
const files = e.target.files;
if (files.length != 1) return;
const action = $("#pictureForm").attr("action");
const formData = new FormData();
formData.append('file', files[0]);
$.ajax({
url: action,
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function() {
var reader = new FileReader();
reader.onload = function (e) {
$('#user-picture').attr('src', e.target.result);
}
reader.readAsDataURL(files[0]);
}
});
return false;
});
$("#edit-profile").on('click', function () {
$("#pictureFile").trigger('click');
return false;
});
});
</script>
}

View File

@@ -0,0 +1,50 @@
@using Microsoft.AspNetCore.Mvc.ApiExplorer;
@using SimpleIdServer.IdServer.Helpers
@using SimpleIdp.Resources
@model IEnumerable<SimpleIdServer.IdServer.UI.ViewModels.SessionViewModel>
@{
ViewBag.Title = SessionsResource.title;
Layout = "~/Views/Shared/_CommonLayout.cshtml";
}
<nav class="navbar navbar-expand-lg bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<img src="~/images/SIDLogo.svg" width="40px" />
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
<div id="container">
@if(Model.Any())
{
var grp = Model.GroupBy(g => g.Realm);
foreach (var kvp in grp)
{
<div class="mb-2">
<h5>@string.Format(SessionsResource.realm, kvp.Key)</h5>
<ul class="list-group">
@foreach (var session in kvp)
{
<li class="list-group-item d-flex justify-content-between align-items-center">
<a href="@Url.Action("Index", "Home", new { prefix = kvp.Key })">@session.Name</a>
<form action="@Url.Action("Index", "Sessions", new { realm = kvp.Key, user = session.Name })" method="post">
@Html.AntiForgeryToken()
<input type="hidden" name="Realm" value="@kvp.Key" />
<input type="hidden" name="User" value="@session.Name" />
<button type="submit" class="btn btn-danger"><i class="fa-solid fa-trash" style="padding-right:5px"></i>@SessionsResource.revoke</button>
</form>
</li>
}
</ul>
</div>
}
}
else
{
<div class="alert alert-danger">@SessionsResource.no_session</div>
}
</div>

View File

@@ -0,0 +1,27 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using SimpleIdp.Resources
@using System.Globalization
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SimpleIdServer - @ViewBag.Title</title>
<link rel="stylesheet" href="@Url.Content("~/lib/bootstrap/css/bootstrap.css")" />
<link rel="stylesheet" href="@Url.Content("~/lib/fontawesome/css/all.css")" />
<link rel="stylesheet" href="@Url.Content("~/styles/theme.css")" />
<link rel="stylesheet" href="@Url.Content("~/styles/authenticate.css")" />
<link rel="stylesheet" href="@Url.Content("~/styles/consent.css")" />
<link rel="stylesheet" href="@Url.Content("~/styles/profile.css")" />
<link rel="icon" href="@Url.Content("~/images/favicon.ico")" />
</head>
<body class="orange">
@RenderBody()
<script type="text/javascript" src="@Url.Content("~/lib/jquery/jquery.js")"></script>
<script type="text/javascript" src="@Url.Content("~/lib/popper.js/umd/popper.js")"></script>
<script type="text/javascript" src="@Url.Content("~/lib/bootstrap/js/bootstrap.js")"></script>
<script type="text/javascript" src="@Url.Content("~/lib/helpers.js")"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

View File

@@ -0,0 +1,82 @@
@using Microsoft.AspNetCore.Components.Web
@using FormBuilder.Components
@using SimpleIdp.Resources
@using System.Globalization
@model SimpleIdServer.IdServer.UI.ViewModels.ILayoutViewModel
@namespace FormBuilder.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value}{Context.Request.QueryString}";
var currentCultureInfo = CultureInfo.DefaultThreadCurrentUICulture;
string languagesLabel = LayoutResource.ResourceManager.GetString("languages");
if (currentCultureInfo != null && !string.IsNullOrWhiteSpace(currentCultureInfo.Name))
{
var str = LayoutResource.ResourceManager.GetString(currentCultureInfo.Name);
if (!string.IsNullOrWhiteSpace(str))
{
languagesLabel = string.Format(LayoutResource.ResourceManager.GetString("selected_language"), str);
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="~/" />
<link rel="stylesheet" href="@Url.Content("~/lib/bootstrap/css/bootstrap.css")" />
<link rel="stylesheet" href="@Url.Content("~/styles/theme.css")" />
<link rel="stylesheet" href="_content/Radzen.Blazor/css/default.css">
<link rel="stylesheet" href="_content/SidFormBuilder/themes.css" />
<link rel="stylesheet" href="_content/SidFormBuilder/style.css" />
<link rel="stylesheet" href="FormBuilder.Startup.styles.css" />
@RenderSection("Header", required: false)
</head>
<body class="orange">
<nav class="navbar navbar-expand-lg bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<img src="~/images/SIDLogo.svg" width="40px" />
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<div class="me-auto"></div>
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" data-bs-toggle="dropdown">
@languagesLabel
</a>
<div class="dropdown-menu">
@foreach (var language in Model.Languages)
{
<form asp-controller="Home" asp-action="SwitchLanguage" asp-area="" method="post">
<input type="hidden" name="culture" value="@language.Code" />
<input type="hidden" name="returnUrl" value="@returnUrl" />
<button type="submit" class="dropdown-item" href="#">@language.Description</button>
</form>
}
</div>
</li>
</ul>
</div>
</div>
</nav>
@RenderBody()
<script src="_framework/blazor.server.js"></script>
<script type="text/javascript" src="@Url.Content("~/lib/jquery/jquery.js")"></script>
<script type="text/javascript" src="@Url.Content("~/lib/popper.js/umd/popper.js")"></script>
<script type="text/javascript" src="@Url.Content("~/lib/bootstrap/js/bootstrap.js")"></script>
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>
<script src="_content/SidFormBuilder/lib.js"></script>
<script src="_content/SidFormBuilder/reCaptcha.js"></script>
<script src="_content/BlazorMonaco/jsInterop.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/loader.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/editor/editor.main.js"></script>
<script type="text/javascript" src="@Url.Content("~/lib/helpers.js")"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

View File

@@ -0,0 +1,97 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using SimpleIdServer.IdServer.Options
@using SimpleIdServer.IdServer.Resources
@using SimpleIdp.Resources
@using Microsoft.Extensions.Options
@using System.Globalization
@inject IOptions<IdServerHostOptions> options
@model SimpleIdServer.IdServer.UI.ViewModels.ILayoutViewModel
@{
var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value}{Context.Request.QueryString}";
var currentCultureInfo = CultureInfo.DefaultThreadCurrentUICulture;
string languagesLabel = LayoutResource.ResourceManager.GetString("languages");
if (currentCultureInfo != null && !string.IsNullOrWhiteSpace(currentCultureInfo.Name))
{
var str = LayoutResource.ResourceManager.GetString(currentCultureInfo.Name);
if (!string.IsNullOrWhiteSpace(str))
{
languagesLabel = string.Format(LayoutResource.ResourceManager.GetString("selected_language"), str);
}
}
Layout = "~/Views/Shared/_CommonLayout.cshtml";
}
<nav class="navbar navbar-expand-lg bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<img src="~/images/SIDLogo.svg" width="40px" />
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto">
@if (User.Identity.IsAuthenticated)
{
<li class="nav-item">
<a class="nav-link" href="@Url.Action("Profile", "Home")">
Welcome @User.Identity.Name
</a>
</li>
}
@if (options.Value.RealmEnabled)
{
<li class="nav-item">
<a class="nav-link" href="@Url.Action("Index", "Sessions", new { prefix = string.Empty })">
@LayoutResource.Sessions
</a>
</li>
}
@RenderSection("SubMenu", required: false)
</ul>
<ul class="navbar-nav">
@if (User.Identity.IsAuthenticated)
{
<li class="nav-item">
<a class="nav-link" href="@Url.Action("Disconnect", "Home", new { area = "" })">@LayoutResource.disconnect</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" href="@Url.Action("Profile", "Home", new { area = "" })">@LayoutResource.authenticate</a>
</li>
}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" data-bs-toggle="dropdown">
@languagesLabel
</a>
<div class="dropdown-menu">
@foreach (var language in Model.Languages)
{
<form asp-controller="Home" asp-action="SwitchLanguage" asp-area="" method="post">
<input type="hidden" name="culture" value="@language.Code" />
<input type="hidden" name="returnUrl" value="@returnUrl" />
<button type="submit" class="dropdown-item" href="#">@language.Description</button>
</form>
}
</div>
</li>
</ul>
</div>
</div>
</nav>
<div id="container">
<div>
@RenderSection("PageTitle", false)
</div>
<div>
@RenderBody()
</div>
</div>
@section Scripts {
@RenderSection("Scripts", required: false)
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/Debug/net8.0/Bogus.dll Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More