Compare commits
5 Commits
c65de51f9c
...
main
Author | SHA1 | Date | |
---|---|---|---|
96864eed93 | |||
9c5ea692b0 | |||
111ada56f7 | |||
1f4b3980c7 | |||
7ac48c3bbf |
@ -16,7 +16,7 @@
|
||||
<PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework" Version="8.0.5-preview-net9" />
|
||||
<PackageVersion Include="HigginsSoft.IdentityServer8.Security" Version="8.0.5-preview-net9" />
|
||||
<PackageVersion Include="IdentityModel.AspNetCore" Version="4.3.0" />
|
||||
<PackageVersion Include="MailKit" Version="4.13.0" />
|
||||
<PackageVersion Include="MailKit" Version="4.8.0" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.0" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="9.0.7" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.7" />
|
||||
@ -42,7 +42,7 @@
|
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageVersion Include="Microsoft.Playwright" Version="1.53.0" />
|
||||
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
|
||||
<PackageVersion Include="MimeKit" Version="4.13.0" />
|
||||
<PackageVersion Include="MimeKit" Version="4.8.0" />
|
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
|
||||
<PackageVersion Include="PayPalMerchantSDK" Version="2.16.250" />
|
||||
|
@ -33,7 +33,7 @@ namespace Yavsc.ApiControllers
|
||||
public BillingController(
|
||||
IAuthorizationService authorizationService,
|
||||
ILoggerFactory loggerFactory,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> SR,
|
||||
IStringLocalizer<BillingController> SR,
|
||||
ApplicationDbContext context,
|
||||
IOptions<GoogleAuthSettings> googleSettings,
|
||||
IYavscMessageSender GCMSender,
|
||||
|
18
src/Yavsc.Server/Exceptions/YavscInfrastructureException.cs
Normal file
18
src/Yavsc.Server/Exceptions/YavscInfrastructureException.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace Yavsc.Services
|
||||
{
|
||||
[Serializable]
|
||||
internal class YavscInfrastructureException : Exception
|
||||
{
|
||||
public YavscInfrastructureException()
|
||||
{
|
||||
}
|
||||
|
||||
public YavscInfrastructureException(string? message) : base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public YavscInfrastructureException(string? message, Exception? innerException) : base(message, innerException)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@ namespace Yavsc.Models.Billing
|
||||
using Yavsc.Abstract.Workflow;
|
||||
using Yavsc.Services;
|
||||
|
||||
public abstract class NominativeServiceCommand : IDecidableQuery, IIdentified<long>
|
||||
public abstract class NominativeServiceCommand : IDecidableQuery, IIdentified<long>, IBillable
|
||||
{
|
||||
public string GetInvoiceId() { return GetType().Name + "/" + Id; }
|
||||
|
||||
|
@ -24,16 +24,7 @@ namespace Yavsc.Models.Haircut
|
||||
string _description = null;
|
||||
public override string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
string type = ResourcesHelpers.GlobalLocalizer[this.GetType().Name];
|
||||
string gender = ResourcesHelpers.GlobalLocalizer[this.Prestation.Gender.ToString()];
|
||||
return $"{_description} {type} ({gender})";
|
||||
}
|
||||
set
|
||||
{
|
||||
_description = value;
|
||||
}
|
||||
get; set;
|
||||
}
|
||||
|
||||
|
||||
|
@ -453,7 +453,6 @@
|
||||
<data name="PasswordConfirm"><value>Confirmation du mot de passe</value></data>
|
||||
<data name="ErrorSendingEmailForConfirm"><value>L'envoi de de courrier pour confirmation de l'adresse e-mail a échoué.</value></data>
|
||||
<data name="EmailSentForConfirm"><value>Un courrier a été envoyé pour confirmation de l'adresse e-mail .</value></data>
|
||||
<data name="ConfirmYourAccountTitle"><value>S'il vous plait, confirmez votre addresse e-mail</value></data>
|
||||
<data name="ConfirmYourAccountBody"><value>Vous avez créé avec succès votre compte {0},
|
||||
mais votre adresse e-mail reste à confirmer.
|
||||
Pour ce faire, suivez le lien suivant : <{1}>.
|
@ -0,0 +1,113 @@
|
||||
<?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="HairCutQueryValidation"><value>Une demande (de {0}) en coiffure à domicile vient d'être validée</value></data>
|
||||
</root>
|
||||
|
File diff suppressed because it is too large
Load Diff
788
src/Yavsc.Server/Resources/Yavsc.Services.MailSender.en.resx
Normal file
788
src/Yavsc.Server/Resources/Yavsc.Services.MailSender.en.resx
Normal file
@ -0,0 +1,788 @@
|
||||
<?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="About">
|
||||
<value>About</value>
|
||||
</data>
|
||||
<data name="About_BookAStar">
|
||||
<value>About BookAStar</value>
|
||||
</data>
|
||||
<data name="About_Message">
|
||||
<value>Welcome by your stars.</value>
|
||||
</data>
|
||||
<data name="access_denied">
|
||||
<value>Access denied</value>
|
||||
</data>
|
||||
<data name="AccountBalance">
|
||||
<value>Account Balance</value>
|
||||
</data>
|
||||
<data name="Activity">
|
||||
<value>Activity</value>
|
||||
</data>
|
||||
<data name="Activities">
|
||||
<value>Activities</value>
|
||||
</data>
|
||||
<data name="additionally">
|
||||
<value>additionally</value>
|
||||
</data>
|
||||
<data name="Allow my geolocatisation, nearby my clients">
|
||||
<value>Allow my geolocatisation, nearby my clients</value>
|
||||
</data>
|
||||
<data name="AnIMessageHasbeenSent">
|
||||
<value>An instant message has been sent to {0}, showing to him your query. You should be contacted very soon.</value>
|
||||
</data>
|
||||
<data name="aprestation">
|
||||
<value>a prestation</value>
|
||||
</data>
|
||||
<data name="AskForAnEstimate">
|
||||
<value>Ask for an estimate</value>
|
||||
</data>
|
||||
<data name="AttachedFiles">
|
||||
<value>Attached files</value>
|
||||
</data>
|
||||
<data name="AuthenticatedOnly">
|
||||
<value>You must be authenticated in order to access this information</value>
|
||||
</data>
|
||||
<data name="Author">
|
||||
<value>Author</value>
|
||||
</data>
|
||||
<data name="available">
|
||||
<value>available</value>
|
||||
</data>
|
||||
<data name="Basket">
|
||||
<value>Basket</value>
|
||||
</data>
|
||||
<data name="Bill_edition">
|
||||
<value>Bill edition</value>
|
||||
</data>
|
||||
<data name="Bill_removal">
|
||||
<value>Bill removal</value>
|
||||
</data>
|
||||
<data name="BillAccessControl">
|
||||
<value>Bill access control</value>
|
||||
</data>
|
||||
<data name="BillCreated">
|
||||
<value>Bill created</value>
|
||||
</data>
|
||||
<data name="BillSourceCode">
|
||||
<value>Bill source code</value>
|
||||
</data>
|
||||
<data name="BillUpdated">
|
||||
<value>Bill updated</value>
|
||||
</data>
|
||||
<data name="body">
|
||||
<value>body</value>
|
||||
</data>
|
||||
<data name="Book A Star">
|
||||
<value>Book an artist</value>
|
||||
</data>
|
||||
<data name="Book IT">
|
||||
<value>Book a performer in information technology</value>
|
||||
</data>
|
||||
<data name="BookingTitleArtiste">
|
||||
<value>Book an artiste</value>
|
||||
</data>
|
||||
<data name="BookingTitle6829C">
|
||||
<value>Book a software editor</value>
|
||||
</data>
|
||||
<data name="Catalog">
|
||||
<value>Catalog</value>
|
||||
</data>
|
||||
<data name="Change user name form">
|
||||
<value>Change user name form</value>
|
||||
</data>
|
||||
<data name="Change your account settings">
|
||||
<value>Change your account settings</value>
|
||||
</data>
|
||||
<data name="ChooseADescription">
|
||||
<value>Please, choose a description</value>
|
||||
</data>
|
||||
<data name="ChooseATitle">
|
||||
<value>Please, choose a title</value>
|
||||
</data>
|
||||
<data name="ChooseADateInTheFutur">
|
||||
<value>Please, Choose A Date In The Futur</value>
|
||||
</data>
|
||||
<data name="ChooseAnEventDate">
|
||||
<value>Please, choose a date for this event </value>
|
||||
</data>
|
||||
<data name="Ciffer">
|
||||
<value>Ciffer</value>
|
||||
</data>
|
||||
<data name="Circles">
|
||||
<value>Circles</value>
|
||||
</data>
|
||||
<data name="Click action">
|
||||
<value>Click action</value>
|
||||
</data>
|
||||
<data name="Color">
|
||||
<value>Color</value>
|
||||
</data>
|
||||
<data name="Comment">
|
||||
<value>Comment</value>
|
||||
</data>
|
||||
<data name="Consultant">
|
||||
<value>Consultant</value>
|
||||
</data>
|
||||
<data name="ContactAPerformer">
|
||||
<value>Contact a performer</value>
|
||||
</data>
|
||||
<data name="CouldNotConvertVToDouble">
|
||||
<value>Could not convert '{0}' to double.</value>
|
||||
</data>
|
||||
<data name="Count">
|
||||
<value>Count</value>
|
||||
</data>
|
||||
<data name="Create">
|
||||
<value>Créer</value>
|
||||
</data>
|
||||
<data name="Credits">
|
||||
<value>Credits</value>
|
||||
</data>
|
||||
<data name="Date_search">
|
||||
<value>Date search</value>
|
||||
</data>
|
||||
<data name="DB">
|
||||
<value>Data base</value>
|
||||
</data>
|
||||
<data name="Description">
|
||||
<value>Description</value>
|
||||
</data>
|
||||
<data name="Disable">
|
||||
<value>Disable</value>
|
||||
</data>
|
||||
<data name="DisplayName">
|
||||
<value>Display Name</value>
|
||||
</data>
|
||||
<data name="DoAnEstimate">
|
||||
<value>Do an estimate</value>
|
||||
</data>
|
||||
<data name="DoComment">
|
||||
<value>Commenter</value>
|
||||
</data>
|
||||
<data name="DocTemplateException">
|
||||
<value>Une erreur est survenue à la génération de votre document</value>
|
||||
</data>
|
||||
<data name="DoNotPublishMyActivity">
|
||||
<value>Ne pas publier mon activité</value>
|
||||
</data>
|
||||
<data name="DoPost">
|
||||
<value>Do post</value>
|
||||
</data>
|
||||
<data name="DoSpecifyCircles">
|
||||
<value>S'il vous plait, spécifiez ceux de vos cercles à qui est destiné ce contenu</value>
|
||||
</data>
|
||||
<data name="DoTag">
|
||||
<value>Tagger</value>
|
||||
</data>
|
||||
<data name="DuplicateEmail">
|
||||
<value>This email adress is already used ({0}).</value>
|
||||
</data>
|
||||
<data name="DuplicateUserName">
|
||||
<value>This user name is already used ({0}).</value>
|
||||
</data>
|
||||
<data name="Edit">
|
||||
<value>Edit</value>
|
||||
</data>
|
||||
<data name="Edited">
|
||||
<value>Edited</value>
|
||||
</data>
|
||||
<data name="EditRelatedSkills">
|
||||
<value>Edit related skills</value>
|
||||
</data>
|
||||
<data name="EndDate">
|
||||
<value>Date de fin</value>
|
||||
</data>
|
||||
<data name="EndHour">
|
||||
<value>Heure de fin</value>
|
||||
</data>
|
||||
<data name="email">
|
||||
<value>e-mail</value>
|
||||
</data>
|
||||
<data name="EMailToPerformerFooter">
|
||||
<value> Generated e-mail from {0}, because of your perfomer profile publication, and your email usage agreement. Visit {1} to modify your profile, unsubscribe or unregister.</value>
|
||||
</data>
|
||||
<data name="entries">
|
||||
<value>entries</value>
|
||||
</data>
|
||||
<data name="Estimate not found">
|
||||
<value>Estimate not found</value>
|
||||
</data>
|
||||
<data name="EstimateWanted">
|
||||
<value>Estimate wanted</value>
|
||||
</data>
|
||||
<data name="EventWebPage">
|
||||
<value>Event Web page</value>
|
||||
</data>
|
||||
<data name="ExistantDB">
|
||||
<value>Existant data base</value>
|
||||
</data>
|
||||
<data name="External Logins">
|
||||
<value>External Logins</value>
|
||||
</data>
|
||||
<data name="FillInAFutureDate">
|
||||
<value>Please, use a date in the future as starting date.</value>
|
||||
</data>
|
||||
<data name="Forbidden">
|
||||
<value>Restricted area</value>
|
||||
</data>
|
||||
<data name="from">
|
||||
<value>from</value>
|
||||
</data>
|
||||
<data name="GiveAnExplicitReason">
|
||||
<value>Tell more, below, about your query</value>
|
||||
</data>
|
||||
<data name="GoogleDidntGeoLocalized">
|
||||
<value>Google could'nt identify this place</value>
|
||||
</data>
|
||||
<data name="Google calendar">
|
||||
<value>Google calendar</value>
|
||||
</data>
|
||||
<data name="Google error">
|
||||
<value>Google error : {0}</value>
|
||||
</data>
|
||||
<data name="Google registration id">
|
||||
<value>Google registration id</value>
|
||||
</data>
|
||||
<data name="Home">
|
||||
<value>Home</value>
|
||||
</data>
|
||||
<data name="Hide">
|
||||
<value>Hide</value>
|
||||
</data>
|
||||
<data name="hidden">
|
||||
<value>hidden</value>
|
||||
</data>
|
||||
<data name="Hide source">
|
||||
<value>Hide the bill source text</value>
|
||||
</data>
|
||||
<data name="I understood">
|
||||
<value>I understood</value>
|
||||
</data>
|
||||
<data name="Icons made by">
|
||||
<value>Icons made by</value>
|
||||
</data>
|
||||
<data name="ImgLocator">
|
||||
<value>Image URI</value>
|
||||
</data>
|
||||
<data name="ImportException">
|
||||
<value>Exception at importing</value>
|
||||
</data>
|
||||
<data name="InternalServerError">
|
||||
<value>Internal Server Error</value>
|
||||
</data>
|
||||
<data name="is licensed by">
|
||||
<value>is licensed by</value>
|
||||
</data>
|
||||
<data name="Item added to basket">
|
||||
<value>Item added to basket</value>
|
||||
</data>
|
||||
<data name="Location">
|
||||
<value>Location</value>
|
||||
</data>
|
||||
<data name="Login">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
<data name="Logout">
|
||||
<value>Logout</value>
|
||||
</data>
|
||||
<data name="MainActivity">
|
||||
<value>Main activity</value>
|
||||
</data>
|
||||
<data name="Manage">
|
||||
<value>Manage</value>
|
||||
</data>
|
||||
<data name="ManagedSiteSkills">
|
||||
<value>Site skills</value>
|
||||
</data>
|
||||
<data name="MaxDate">
|
||||
<value>Maximal date for the rendez-vous</value>
|
||||
</data>
|
||||
<data name="MEACode">
|
||||
<value>Mainly Exerted Activity code</value>
|
||||
</data>
|
||||
<data name="Manage your account">
|
||||
<value>Manage your account</value>
|
||||
</data>
|
||||
<data name="Members">
|
||||
<value>Members</value>
|
||||
</data>
|
||||
<data name="Message sent">
|
||||
<value>Your message has been sent.</value>
|
||||
</data>
|
||||
<data name="MinDate">
|
||||
<value>Minimal date for the rendez-vous</value>
|
||||
</data>
|
||||
<data name="Modify">
|
||||
<value>Modify</value>
|
||||
</data>
|
||||
<data name="My Estimates">
|
||||
<value>My estimates</value>
|
||||
</data>
|
||||
<data name="Name">
|
||||
<value>Name</value>
|
||||
</data>
|
||||
<data name="Needs">
|
||||
<value>Needs</value>
|
||||
</data>
|
||||
<data name="Need">
|
||||
<value>Need</value>
|
||||
</data>
|
||||
<data name="nouvel instrument">
|
||||
<value>new instrument</value>
|
||||
</data>
|
||||
<data name="UserName">
|
||||
<value>Display name</value>
|
||||
</data>
|
||||
<data name="New user name">
|
||||
<value>New display name</value>
|
||||
</data>
|
||||
<data name="New Tag">
|
||||
<value>New Tag</value>
|
||||
</data>
|
||||
<data name="NewPasswordMessageSent">
|
||||
<value>A message had been sent, containing a link to follow in order to update your password.</value>
|
||||
</data>
|
||||
<data name="no content">
|
||||
<value>no content</value>
|
||||
</data>
|
||||
<data name="NoSkillforthisactivity">
|
||||
<value>No skill was informed by any performer for this activity</value>
|
||||
</data>
|
||||
<data name="none">
|
||||
<value>none</value>
|
||||
</data>
|
||||
<data name="Non existent user">
|
||||
<value>Non existent user</value>
|
||||
</data>
|
||||
<data name="Not Approuved">
|
||||
<value>Not Approuved</value>
|
||||
</data>
|
||||
<data name="No calendar for this user">
|
||||
<value>No calendar was associated to this user.</value>
|
||||
</data>
|
||||
<data name="Offline">
|
||||
<value>Offline</value>
|
||||
</data>
|
||||
<data name="Online">
|
||||
<value>Online</value>
|
||||
</data>
|
||||
<data name="OnlyAuthorizedMayContact">
|
||||
<value>Only authorized users may contact a performer by mail.</value>
|
||||
</data>
|
||||
<data name="Pdf version">
|
||||
<value>Pdf version</value>
|
||||
</data>
|
||||
<data name="PerformanceDate">
|
||||
<value>Performance date</value>
|
||||
</data>
|
||||
<data name="PerformancePlace">
|
||||
<value>Performance place</value>
|
||||
</data>
|
||||
<data name="Performers">
|
||||
<value>Performers</value>
|
||||
</data>
|
||||
<data name="Performer">
|
||||
<value>Performer</value>
|
||||
</data>
|
||||
<data name="Person">
|
||||
<value>Person</value>
|
||||
</data>
|
||||
<data name="Photo">
|
||||
<value>Photo</value>
|
||||
</data>
|
||||
<data name="PhotoUpdated">
|
||||
<value>Photo updated</value>
|
||||
</data>
|
||||
<data name="PleaseCheckYourEmail">
|
||||
<value>Please check your email to reset your password.</value>
|
||||
</data>
|
||||
<data name="PleaseConfirmYourNewPassword">
|
||||
<value>Please confirm your new password</value>
|
||||
</data>
|
||||
<data name="PleaseFillInABody">
|
||||
<value>Please fill in a body</value>
|
||||
</data>
|
||||
<data name="PleaseFillInAReason">
|
||||
<value>Please, fill in a reason</value>
|
||||
</data>
|
||||
<data name="Posted">
|
||||
<value>Posted</value>
|
||||
</data>
|
||||
<data name="PreferedDate">
|
||||
<value>Prefered date</value>
|
||||
</data>
|
||||
<data name="prestation">
|
||||
<value>prestation</value>
|
||||
</data>
|
||||
<data name="PresationLocation">
|
||||
<value>Presation location:{0}.\n</value>
|
||||
</data>
|
||||
<data name="Preview">
|
||||
<value>Preview</value>
|
||||
<comment>comment on preview</comment>
|
||||
</data>
|
||||
<data name="Profile edition">
|
||||
<value>Profile edition</value>
|
||||
</data>
|
||||
<data name="Private circle">
|
||||
<value>Private circle</value>
|
||||
</data>
|
||||
<data name="ProviderId">
|
||||
<value>Provider identifier</value>
|
||||
</data>
|
||||
<data name="ProviderName">
|
||||
<value>Provider name</value>
|
||||
</data>
|
||||
<data name="Product reference">
|
||||
<value>Product_reference</value>
|
||||
</data>
|
||||
<data name="ReadMore">
|
||||
<value>Read more ...</value>
|
||||
</data>
|
||||
<data name="reason">
|
||||
<value>reason</value>
|
||||
</data>
|
||||
<data name="Register">
|
||||
<value>Register</value>
|
||||
</data>
|
||||
<data name="RegistrationUnexpectedError">
|
||||
<value>Registration: unexpected error occured: "{0}". Please forgive for troubles</value>
|
||||
</data>
|
||||
<data name="Remember me">
|
||||
<value>Remember me</value>
|
||||
</data>
|
||||
<data name="Remove">
|
||||
<value>Remove</value>
|
||||
</data>
|
||||
<data name="ResetPassword">
|
||||
<value>Reset your password</value>
|
||||
</data>
|
||||
<data name="Role">
|
||||
<value>Role</value>
|
||||
</data>
|
||||
<data name="role created">
|
||||
<value>role created</value>
|
||||
</data>
|
||||
<data name="RoleName">
|
||||
<value>Role name</value>
|
||||
</data>
|
||||
<data name="Save these settings">
|
||||
<value>Save these settings</value>
|
||||
</data>
|
||||
<data name="Search">
|
||||
<value>Search</value>
|
||||
</data>
|
||||
<data name="SiteSkills">
|
||||
<value>Talents/Compétences/Spécialités gérés sur ce site</value>
|
||||
</data>
|
||||
<data name="Skill">
|
||||
<value>Skill</value>
|
||||
</data>
|
||||
<data name="Skills">
|
||||
<value>Skills</value>
|
||||
</data>
|
||||
<data name="Specifyavalidlatitude">
|
||||
<value>Please, specify a valid latitude</value>
|
||||
</data>
|
||||
<data name="Specifyavalidlongitude">
|
||||
<value>Please, specify a valid longitude</value>
|
||||
</data>
|
||||
<data name="SpecifyLatitude">
|
||||
<value>Specify a latitude</value>
|
||||
</data>
|
||||
<data name="SpecifyLongitude">
|
||||
<value>Specify a longitude</value>
|
||||
</data>
|
||||
<data name="SpecifyPlace">
|
||||
<value>Please, specify a place</value>
|
||||
</data>
|
||||
<data name="SomeoneAskingYouForAnEstimate">
|
||||
<value>{0} would want you to establish an estimate concerning {1}</value>
|
||||
</data>
|
||||
<data name="Sound">
|
||||
<value>Sound</value>
|
||||
</data>
|
||||
<data name="StartDate">
|
||||
<value>Start date</value>
|
||||
</data>
|
||||
<data name="StartDateAfterEndDate">
|
||||
<value>The ending date must be later than the starting one.</value>
|
||||
</data>
|
||||
<data name="StartHour">
|
||||
<value>Start hour</value>
|
||||
</data>
|
||||
<data name="Submit">
|
||||
<value>Submit</value>
|
||||
</data>
|
||||
<data name="SubmitChanges">
|
||||
<value>Submit changes</value>
|
||||
</data>
|
||||
<data name="Tag">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
<data name="Tag name">
|
||||
<value>Tag name</value>
|
||||
</data>
|
||||
<data name="Tex version">
|
||||
<value>LaTeX version</value>
|
||||
</data>
|
||||
<data name="ThisSiteUsesCookies">
|
||||
<value>This site uses cookies</value>
|
||||
</data>
|
||||
<data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis">
|
||||
<value>ThisPerformer Gives access to his calendar and seems to be available this</value>
|
||||
</data>
|
||||
<data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis">
|
||||
<value>This performer gives access to his calendar and it appears he should not be available this</value>
|
||||
</data>
|
||||
<data name="ThisPerformerDoesntGiveAccessToHisCalendar">
|
||||
<value>ThisPerformerDoesntGiveAccessToHisCalendar</value>
|
||||
</data>
|
||||
<data name="Title">
|
||||
<value>Title</value>
|
||||
</data>
|
||||
<data name="to">
|
||||
<value>to</value>
|
||||
</data>
|
||||
<data name="TwoFactorAuthentication">
|
||||
<value>Two-Factor authentication</value>
|
||||
</data>
|
||||
<data name="Unitary_cost">
|
||||
<value>Unitary_cost</value>
|
||||
</data>
|
||||
<data name="Unregister">
|
||||
<value>Unregister</value>
|
||||
</data>
|
||||
<data name="User List">
|
||||
<value>User List</value>
|
||||
</data>
|
||||
<data name="User name">
|
||||
<value>User name</value>
|
||||
</data>
|
||||
<data name="UsersInRole">
|
||||
<value>List of users assuming the role "{0}"</value>
|
||||
</data>
|
||||
<data name="UserNotInThisRole">
|
||||
<value>This user is not in this role</value>
|
||||
</data>
|
||||
<data name="UserSkills">
|
||||
<value>User skills</value>
|
||||
</data>
|
||||
<data name="View source">
|
||||
<value>View source</value>
|
||||
</data>
|
||||
<data name="was added to_the_role">
|
||||
<value>was added to the role</value>
|
||||
</data>
|
||||
<data name="was_added_to_the_empty_role">
|
||||
<value>There was no user in the "{1}" role. You ({0}) was just added as firt user in the "{1}" role.</value>
|
||||
</data>
|
||||
<data name="Welcome">
|
||||
<value>Welcome</value>
|
||||
<comment></comment>
|
||||
</data>
|
||||
<data name="XHasBeenNotified">
|
||||
<value>{0} has been notified of your query, you should be fast contacted</value>
|
||||
</data>
|
||||
<data name="Xshouldbeavailable">
|
||||
<value>regarding his calendar, {0} should be available for this booking</value>
|
||||
</data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.Instrumentation">
|
||||
<value>Paramètres musicien (l'instrument)</value>
|
||||
</data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.DjSettings">
|
||||
<value>Paramètres Dj (le compte SoundCloud.com)</value>
|
||||
</data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.FormationSettings">
|
||||
<value>Paramètres formation (les partenaires)</value>
|
||||
</data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.GeneralSettings">
|
||||
<value>Paramètres généraux: une couleur musicale</value>
|
||||
</data>
|
||||
<data name="YouNeedToBeAuthenticatedIOToContact">
|
||||
<value>You need to be authenticated in order to contact a performer</value>
|
||||
</data>
|
||||
<data name="younotadmin">
|
||||
<value>You're not administrator</value>
|
||||
</data>
|
||||
<data name="YourEstimates">
|
||||
<value>Your estimates</value>
|
||||
</data>
|
||||
<data name="YourMEACode">
|
||||
<value>Your activity</value>
|
||||
</data>
|
||||
<data name="YourNeed">
|
||||
<value>Your need</value>
|
||||
</data>
|
||||
<data name="yourquerytransmitted">
|
||||
<value>your query has been transmitted</value>
|
||||
</data>
|
||||
<data name="YourSkills">
|
||||
<value>Your skills, your special fields, the scope of your activities</value>
|
||||
</data>
|
||||
<data name="YourPosts">
|
||||
<value>You posts</value>
|
||||
</data>
|
||||
<data name="YourProfile">
|
||||
<value>Your profile</value>
|
||||
</data>
|
||||
<data name="YourMessageHasBeenSent">
|
||||
<value>Your message has been sent</value>
|
||||
</data>
|
||||
<data name="Longueur de cheveux">
|
||||
<value>Hair Length</value>
|
||||
</data>
|
||||
<data name="Français">
|
||||
<value>French</value>
|
||||
</data>
|
||||
<data name="Anglais">
|
||||
<value>English</value>
|
||||
</data>
|
||||
<data name="Portugais"><value>Portugese</value></data>
|
||||
<data name="RequiredField">
|
||||
<value>This field is required.</value>
|
||||
</data>
|
||||
<data name="PasswordTooShort">
|
||||
<value>Passwords must be at least {0} characters.</value>
|
||||
</data>
|
||||
<data name="PasswordRequiresNonLetterAndDigit">
|
||||
<value>Passwords must have at least one non letter and non digit character.</value>
|
||||
</data>
|
||||
<data name="PasswordRequiresDigit">
|
||||
<value>Passwords must have at least one digit ('0'-'9').</value>
|
||||
</data>
|
||||
<data name="PasswordRequiresUpper">
|
||||
<value>Passwords must have at least one uppercase ('A'-'Z').</value>
|
||||
</data>
|
||||
<data name="PassAndConfirmDontMach">
|
||||
<value>Passwords and confirmation are not the same.</value>
|
||||
</data>
|
||||
<data name="PasswordConfirm">
|
||||
<value>Password confirmation</value>
|
||||
</data>
|
||||
<data name="InvalidUserName">
|
||||
<value>Invalid user name.
|
||||
Valid caracters are: underscore '_', '-', 'a' - 'z', 'A' - 'Z', '0' - '9', the single quote ('), the space and the dot.</value>
|
||||
</data>
|
||||
<data name="EmailSentForConfirm">
|
||||
<value>An email has been sent to confirm your addresse.</value>
|
||||
</data>
|
||||
<data name="ConfirmYourAccountBody"><value>You successfully created your {0} account,
|
||||
but your e-mail address is not yet confirmed.
|
||||
Please, in order to validate it, follow this link <{1}>.
|
||||
|
||||
Thanks.
|
||||
--
|
||||
{0} - {2} <https://{3}></value>
|
||||
</data>
|
||||
<data name="Instrumentation"><value>Instrumentation</value></data>
|
||||
<data name="Partenariat"><value>Co-working</value></data>
|
||||
</root>
|
@ -437,7 +437,6 @@
|
||||
<data name="ConfirmPassword"><value>Confirme sua senha</value></data>
|
||||
<data name="ErrorSendingEmailForConfirm"><value>O envio de e-mail para confirmação do endereço de e-mail falhou.</value></data>
|
||||
<data name="EmailSentForConfirm"><value>Um e-mail foi enviado para confirmação do endereço de e-mail.</value></data>
|
||||
<data name="ConfirmYourAccountTitle"><value>Por favor, confirme seu endereço de e-mail</value></data>
|
||||
<data name="ConfirmYourAccountBody"><value>Você criou sua conta {0} com sucesso,
|
||||
mas o seu endereço de e-mail tem que ser confirmado.
|
||||
Para fazer isso, siga o seguinte link : <{1}>.
|
282
src/Yavsc.Server/Resources/Yavsc.Services.MailSender.resx
Normal file
282
src/Yavsc.Server/Resources/Yavsc.Services.MailSender.resx
Normal file
@ -0,0 +1,282 @@
|
||||
<?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="Reset Password"><value>Ré-initialiser votre mot de passe</value></data>
|
||||
<data name="role created"><value>Rôle créé</value></data>
|
||||
<data name="RoleName"><value>Nom du rôle </value></data>
|
||||
<data name="Save these settings"><value>Enregistrer ces paramètres</value></data>
|
||||
<data name="Search"><value>Chercher</value></data>
|
||||
<data name="Select a Google calendar"><value>Selectioner un calendrier Google</value></data>
|
||||
<data name="Send"><value>Envoyer</value></data>
|
||||
<data name="Send a private message"><value>Envoyer un message privé</value></data>
|
||||
<data name="Send a public message"><value>Envoyer un message publique</value></data>
|
||||
<data name="Set"><value>Positioner</value></data>
|
||||
<data name="SettingsClass"><value>Classe du paramétrage</value></data>
|
||||
<data name="Short"><value>court</value></data>
|
||||
<data name="Son blog"><value>Son blog</value></data>
|
||||
<data name="Your performer profile"><value>Votre profil professionel</value></data>
|
||||
<data name="Setup below your activity parameters"><value>Positionnez ci-après vos les paramêtre de votre activité</value></data>
|
||||
<data name="SiteSkills"><value>Talents/Compétences/Spécialités gérés sur ce site</value></data>
|
||||
<data name="Skill"><value>Compétence</value></data>
|
||||
<data name="Skills"><value>Talents/Compétences/Spécialités</value></data>
|
||||
<data name="SomeoneAskingYouForAnEstimate"><value>{0} désirerait un devis concernant {1}</value></data>
|
||||
<data name="Sound"><value>Son</value></data>
|
||||
<data name="SpecifyLatitude"><value>Specify a latitude</value></data>
|
||||
<data name="SpecifyLongitude"><value>Specify a longitude</value></data>
|
||||
<data name="SpecifyPlace"><value>L'endroit ainsi renseigné ne semble pas convenir ...</value></data>
|
||||
<data name="Specifyavalidlatitude"><value>Please, specify a valid latitude.</value></data>
|
||||
<data name="StartDate"><value>Date de début</value></data>
|
||||
<data name="StartDateAfterEndDate"><value>La date de fin doit être postérieure à la date de début.</value></data>
|
||||
<data name="StartHour"><value>Heure de début</value></data>
|
||||
<data name="Submit"><value>Soumettre</value></data>
|
||||
<data name="SubmitChanges"><value>Envoyer les modifications</value></data>
|
||||
<data name="Tag"><value>Tag</value></data>
|
||||
<data name="Tag name"><value>Nom du tag</value></data>
|
||||
<data name="Tex version"><value>Version LaTeX</value></data>
|
||||
<data name="ThisSiteUsesCookies"><value>Ce site utilise les cookies</value></data>
|
||||
<data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis"><value>Selon son calendier Google, ce perstataire est disponbile ce</value></data>
|
||||
<data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis"><value>Selon son calendier Google, ce perstataire pourrait ne pas être disponible ce</value></data>
|
||||
<data name="ThisPerformerDoesntGiveAccessToHisCalendar"><value>Ce prestataire n'a pas mis de calendrier à disposition.</value></data>
|
||||
<data name="Title"><value>Titre</value></data>
|
||||
<data name="Feature"><value>Fonctionalité</value></data>
|
||||
<data name="FeatureId"><value>Identifiant de fonctionalité</value></data>
|
||||
<data name="to"><value>à</value></data>
|
||||
<data name="TwoFactorAuthentication"><value>Double identification</value></data>
|
||||
<data name="Unitary_cost"><value>Coût unitaire</value></data>
|
||||
<data name="Unregister"><value>Se désinscrire</value></data>
|
||||
<data name="Use a local account to log in"><value>Utiliser un compte local pour se connecter</value></data>
|
||||
<data name="Use another service to log in"><value>Utiliser un autre service pour se connecter</value></data>
|
||||
<data name="UseGeoLocalizationToReduceDistanceWithClients"><value>Utiliser ma position pour avoir des clients plus proches</value></data>
|
||||
<data name="User"><value>Utilisateur</value><comment></comment></data>
|
||||
<data name="User List"><value>Liste des utilisateurs</value><comment></comment></data>
|
||||
<data name="UserName"><value>Nom d'utilisateur</value></data>
|
||||
<data name="UsersInRole"><value>Liste des utilisateurs assumant le rôle "{0}"</value></data>
|
||||
<data name="UserSkills"><value>Talents/compétences/spécialités utilisateur</value></data>
|
||||
<data name="UserNotInThisRole"><value>Le rôle demandé n'est pas assumé par ce préstataire</value></data>
|
||||
<data name="ValidationDate"><value>Date de validation</value></data>
|
||||
<data name="View_source"><value>Voir le texte source de l'article</value></data>
|
||||
<data name="was_added_to_the_role"><value>a été ajouté au rôle</value></data>
|
||||
<data name="was_added_to_the_empty_role"><value>Il n'y avait pas d'utilisateur dans le rôle "{1}". Vous ({0}) avez été ajouté au rôle "{1}".</value></data>
|
||||
<data name="WebSite"><value>Site Web</value><comment></comment></data>
|
||||
<data name="Welcome"><value>Bienvenue</value><comment></comment></data>
|
||||
<data name="Women"><value>Femme</value><comment></comment></data>
|
||||
<data name="XHasBeenNotified"><value>{0} à été notifié de votre demande, vous devriez être contacté rapidement</value></data>
|
||||
<data name="Xshouldbeavailable"><value>Au vu de son calendrier,
|
||||
{0} devrait être disponible pour ce rendez-vous</value></data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.Instrumentation"><value>Paramètres musicien (l'instrument)</value></data>
|
||||
|
||||
<data name="Yavsc.Models.Musical.Profiles.DjSettings"><value>Paramètres Dj (le compte SoundCloud.com)</value></data>
|
||||
<data name="Yavsc.Models.Workflow.Profiles.FormationSettings"><value>Paramètres formation (les partenaires)</value></data>
|
||||
<data name="Yavsc.Models.Musical.Profiles.GeneralSettings"><value>Paramètres généraux (visibilité et présentation)</value></data>
|
||||
<data name="Yavsc.Models.Haircut.BrusherProfile"><value>Paramètres coiffeur: tarifs, disponibilité</value></data>
|
||||
<data name="Yes"><value>Oui</value></data>
|
||||
<data name="YouNeedToBeAuthenticatedIOToContact"><value>Vous devez vous authentifier pour pouvoir demander un devis
|
||||
à un préstataire.</value></data>
|
||||
<data name="younotadmin"><value>Vous n'êtes pas administrateur</value></data>
|
||||
<data name="Your account settings"><value>Les paramètres de votre compte</value></data>
|
||||
<data name="Your book query"><value>Votre demande de rendez-vous</value></data>
|
||||
<data name="Your password has been reset."><value>Votre mote de passe a été mis à jour.</value></data>
|
||||
<data name="YourEstimates"><value>Vos Devis</value></data>
|
||||
<data name="YourMEACode"><value>Votre activité</value></data>
|
||||
<data name="YourNeed"><value>Votre besoin</value></data>
|
||||
<data name="yourquerytransmitted"><value>Votre demande a été transmise</value></data>
|
||||
<data name="YourSkills"><value>Vos talents, vos spécialités, le domaine de vos activités</value></data>
|
||||
<data name="Your posts"><value>Vos publications</value></data>
|
||||
<data name="Your profile"><value>Votre profil</value></data>
|
||||
|
||||
<data name="YourMessageHasBeenSent"><value>Votre messge a été envoyé</value></data>
|
||||
<data name="Tell more, below, about your query"><value>Dites en plus, ci àprès, à propos de cet évennement</value></data>
|
||||
<data name="UnsetActivity"><value>Supprimer mon profil professionel</value></data>
|
||||
<data name="Français"><value>Français</value></data>
|
||||
<data name="Anglais"><value>Anglais</value></data>
|
||||
<data name="Portugais"><value>Portugais</value></data>
|
||||
<data name="InvalidUserName"><value>Nom d'utilisateur invalide.
|
||||
Les caratères valides sont: le souligné (_), le petit titret (-), l'apostrohe ('), les minuscules et majuscules de a à z, les chiffres de 0 à 9, l'espace et le point.</value></data>
|
||||
<data name="RequiredField"><value>Ce champ est obligatoire.</value></data>
|
||||
<data name="validationError"><value>Champ invalide ...</value></data>
|
||||
<data name="PasswordTooShort"><value>Le Mot de passe doit contenir au moins 6 caractères.</value></data>
|
||||
<data name="PasswordRequiresNonLetterAndDigit"><value>Mot de passe doit contenir au moins un caractère spécial (ni un chiffre, ni une lettre).</value></data>
|
||||
<data name="PasswordRequiresDigit"><value>Les mots de passe doivent contenir au moins un chiffre ('0' à '9').</value></data>
|
||||
<data name="PasswordRequiresUpper"><value>Les mots de passe doivent contenir au moins une lettre majuscule ('A' à 'Z').</value></data>
|
||||
<data name="PassAndConfirmDontMach"><value>Le mot de passe et sa confirmation ne sont pas les mêmes.</value></data>
|
||||
<data name="PasswordConfirm"><value>Confirmation du mot de passe</value></data>
|
||||
<data name="ConfirmPassword"><value>Confirmation du mot de passe</value></data>
|
||||
<data name="ErrorSendingEmailForConfirm"><value>L'envoi de de courrier pour confirmation de l'adresse e-mail a échoué.</value></data>
|
||||
<data name="EmailSentForConfirm"><value>Un courrier a été envoyé pour confirmation de l'adresse e-mail .</value></data>
|
||||
|
||||
<data name="AccountEmailFactorTitle"><value>Le second facteur de votre identification</value></data>
|
||||
<data name="AccountEmailFactorBody"><value>Votre compte est endurci d'une requisition d'un second facteur d'identification.
|
||||
Une nouvelle connection depuis un navigateur web nécéssite votre authorisation.
|
||||
Vous pouvez l'accorder en suivant le lien suivant : <{1}>.
|
||||
|
||||
Votre code dáctivation est : {4}
|
||||
|
||||
Vour pourrez cochez la case "Se souvenir de ce navigateur" pour conserver cette authorisation pour ce navigateur.
|
||||
{0} - {2} <{3}></value></data>
|
||||
<data name="ConfirmYourAccountBody"><value>Vous avez créé avec succès votre compte {0},
|
||||
mais votre adresse e-mail reste à confirmer.
|
||||
|
||||
Pour ce faire, veuillez, s'il vous plait, suivre le lien suivant
|
||||
dans votre navigateur favori : <{1}>.
|
||||
|
||||
--
|
||||
{0} - {2} <{3}></value></data>
|
||||
<data name="BadStringLength"><value>Taille maximale: {0} caractère.</value></data>
|
||||
<data name="DetailledMinMaxStringLength"><value>Ce champ est
|
||||
d'au moins {0} et d'au plus {1} caractère(s) (manquent {2}) ou ({3} en trop).</value></data>
|
||||
<data name="DetailledMaxStringLength"><value>Ce champ est
|
||||
d'au plus {0} caractère(s) ({1} en excès). </value></data>
|
||||
<data name="EmailSentToPerformer"><value>Un message éléctronique a été envoyé à {0}.</value></data>
|
||||
<data name="QueryValidatedNonReg"><value>Un client vient de valider une demande de prestation à votre encontre:
|
||||
|
||||
Prestation: {0}
|
||||
Client : {1}
|
||||
Date: {2},
|
||||
Adresse: {3}
|
||||
|
||||
-----
|
||||
{4}
|
||||
|
||||
Facture prévue (non réglée): {5}</value></data>
|
||||
<data name="QueryValidatedRegular"><value>Un client vient de valider une demande de prestation à votre encontre:
|
||||
|
||||
Prestation: {0}
|
||||
Client : {1}
|
||||
Date: {2},
|
||||
Adresse: {3}
|
||||
|
||||
-----
|
||||
{4}
|
||||
|
||||
Facture réglée: {5}</value></data>
|
||||
|
||||
<data name="AllowMonthlyEmail"><value>Recevoir la lettre mensuelle d'information</value></data>
|
||||
<data name="Join"><value>joindre</value></data>
|
||||
<data name="Enroll"><value>Enrôler</value></data>
|
||||
<data name="Fire"><value>Licencier</value></data>
|
||||
<data name="LiveFlow"><value>Flux live</value></data>
|
||||
<data name="Instrumentation"><value>Instrumentation</value></data>
|
||||
<data name="Partenariat"><value>Partenariat</value></data>
|
||||
<data name="IconWebUploadSpecification"><value>
|
||||
Le format png pourrait être supporté ici,
|
||||
le format Gif, peut-être aussi, et même, mais là, moins souvent, le surnommé Jpg.
|
||||
</value></data>
|
||||
|
||||
</root>
|
@ -14,16 +14,17 @@ using System.Web;
|
||||
|
||||
namespace Yavsc.Services
|
||||
{
|
||||
public class MailSender : IEmailSender<ApplicationUser>, IEmailSender, ITrueEmailSender
|
||||
public class MailSender : IEmailSender<ApplicationUser>, IEmailSender, ITrueEmailSender
|
||||
{
|
||||
private readonly IStringLocalizer<YavscLocalization> localizer;
|
||||
private readonly IStringLocalizer<MailSender> localizer;
|
||||
readonly SiteSettings siteSettings;
|
||||
readonly SmtpSettings smtpSettings;
|
||||
private readonly ILogger logger;
|
||||
public MailSender(
|
||||
IOptions<SiteSettings> sitesOptions,
|
||||
IOptions<SiteSettings> sitesOptions,
|
||||
IOptions<SmtpSettings> smtpOptions,
|
||||
ILoggerFactory loggerFactory
|
||||
ILoggerFactory loggerFactory,
|
||||
IStringLocalizer<MailSender> localizer
|
||||
)
|
||||
{
|
||||
this.localizer = localizer;
|
||||
@ -46,17 +47,15 @@ namespace Yavsc.Services
|
||||
/// <returns>a MessageWithPayloadResponse,
|
||||
/// <c>bool somethingsent = (response.failure == 0 && response.success > 0)</c>
|
||||
/// </returns>
|
||||
|
||||
|
||||
public async Task SendEmailAsync(string email, string subject, string htmlMessage)
|
||||
{
|
||||
await SendEmailAsync("", email, subject, htmlMessage);
|
||||
await SendEmailAsync("", email, subject, htmlMessage);
|
||||
}
|
||||
|
||||
public async Task<string> SendEmailAsync(string name, string email, string subject, string htmlMessage)
|
||||
{
|
||||
logger.LogInformation($"SendEmail for {email} : {subject}");
|
||||
MimeMessage msg = new ();
|
||||
logger.LogInformation($"SendEmail for {email} : {subject}");
|
||||
MimeMessage msg = new();
|
||||
msg.From.Add(new MailboxAddress(siteSettings.Owner.Name,
|
||||
siteSettings.Owner.EMail));
|
||||
msg.To.Add(new MailboxAddress(name, email));
|
||||
@ -68,20 +67,22 @@ namespace Yavsc.Services
|
||||
msg.MessageId = MimeKit.Utils.MimeUtils.GenerateMessageId(
|
||||
siteSettings.Authority
|
||||
);
|
||||
using (SmtpClient sc = new ())
|
||||
using (SmtpClient sc = new())
|
||||
{
|
||||
sc.Connect(
|
||||
smtpSettings.Server,
|
||||
smtpSettings.Port,
|
||||
SecureSocketOptions.Auto);
|
||||
|
||||
if (smtpSettings.UserName!=null) {
|
||||
NetworkCredential creds = new (
|
||||
smtpSettings.UserName, smtpSettings.Password);
|
||||
await sc.AuthenticateAsync(System.Text.Encoding.UTF8, creds, System.Threading.CancellationToken.None);
|
||||
SecureSocketOptions.Auto
|
||||
);
|
||||
|
||||
if (smtpSettings.UserName != null)
|
||||
{
|
||||
sc.Authenticate(smtpSettings.UserName, smtpSettings.Password);
|
||||
}
|
||||
|
||||
await sc.SendAsync(msg);
|
||||
logger.LogInformation($"Sent : {msg.MessageId}");
|
||||
sc.Disconnect(true);
|
||||
}
|
||||
return msg.MessageId;
|
||||
}
|
||||
@ -93,10 +94,10 @@ namespace Yavsc.Services
|
||||
|
||||
public async Task SendPasswordResetCodeAsync(ApplicationUser user, string email, string resetCode)
|
||||
{
|
||||
var callbackUrl = siteSettings.Audience + "/Account/ResetPassword/" +
|
||||
var callbackUrl = siteSettings.Audience + "/Account/ResetPassword/" +
|
||||
HttpUtility.UrlEncode(user.Id) + "/" + HttpUtility.UrlEncode(resetCode);
|
||||
|
||||
await SendEmailAsync(user.UserName, user.Email,
|
||||
|
||||
await SendEmailAsync(user.UserName, user.Email,
|
||||
localizer["Reset Password"],
|
||||
localizer["Please reset your password by "] + " <a href=\"" +
|
||||
callbackUrl + "\" >following this link</a>");
|
||||
@ -105,10 +106,10 @@ namespace Yavsc.Services
|
||||
|
||||
public async Task SendPasswordResetLinkAsync(ApplicationUser user, string email, string resetLink)
|
||||
{
|
||||
await SendEmailAsync(user.UserName, user.Email,
|
||||
localizer["Reset Password"],
|
||||
localizer["Please reset your password by "] + " <a href=\"" +
|
||||
resetLink + "\" >following this link</a>");
|
||||
await SendEmailAsync(user.UserName, user.Email,
|
||||
localizer["Reset Password"],
|
||||
localizer["Please reset your password by "] + " <a href=\"" +
|
||||
resetLink + "\" >following this link</a>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,14 +14,17 @@ namespace Yavsc
|
||||
public string FavIcon { get; set; } = "favicon.ico";
|
||||
public string Logo { get; set; } = "logo.png";
|
||||
/// <summary>
|
||||
/// Conceptually,
|
||||
/// This authorisation server only has this present site as unique audience.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string Audience { get; set; } = "lua.pschneider.fr";
|
||||
|
||||
/// <summary>
|
||||
/// it's a very small company, with one domaine name only,
|
||||
/// so let it be the same as in the Audience field.
|
||||
/// External Url
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string ExternalUrl { get; set; } = "http://lua.pschneider.fr";
|
||||
/// <summary>
|
||||
/// Must be a fqdn.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string Authority { get; set; } = "lua.pschneider.fr";
|
||||
|
@ -5,10 +5,10 @@ namespace Yavsc.ViewModels.Account
|
||||
{
|
||||
public class UnregisterViewModel
|
||||
{
|
||||
[YaRequired]
|
||||
[Required]
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string ReturnUrl { get; set; }
|
||||
public string? ReturnUrl { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -29,4 +29,4 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../Yavsc.Abstract/Yavsc.Abstract.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -28,6 +28,7 @@ using System.Security.Cryptography;
|
||||
using System.Text.Unicode;
|
||||
using System.Text;
|
||||
using Yavsc.Server.Helpers;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Yavsc.Controllers
|
||||
{
|
||||
@ -66,7 +67,7 @@ namespace Yavsc.Controllers
|
||||
ITrueEmailSender emailSender,
|
||||
IOptions<SiteSettings> siteSettings,
|
||||
ILoggerFactory loggerFactory, IOptions<TwilioSettings> twilioSettings,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> localizer,
|
||||
IStringLocalizerFactory localizerFactory,
|
||||
ApplicationDbContext dbContext)
|
||||
{
|
||||
_interaction = interaction;
|
||||
@ -81,8 +82,9 @@ namespace Yavsc.Controllers
|
||||
_siteSettings = siteSettings.Value;
|
||||
_twilioSettings = twilioSettings.Value;
|
||||
_logger = loggerFactory.CreateLogger<AccountController>();
|
||||
_localizer = localizer;
|
||||
|
||||
_dbContext = dbContext;
|
||||
_localizer = localizerFactory.Create(typeof(AccountController));
|
||||
}
|
||||
|
||||
|
||||
@ -861,11 +863,13 @@ namespace Yavsc.Controllers
|
||||
{
|
||||
ApplicationUser user;
|
||||
// Username should not contain any '@'
|
||||
if (model.LoginOrEmail.Contains('@')) {
|
||||
if (model.LoginOrEmail.Contains('@'))
|
||||
{
|
||||
user = await _userManager.FindByEmailAsync(model.LoginOrEmail);
|
||||
}
|
||||
else {
|
||||
user = await _dbContext.Users.FirstOrDefaultAsync( u => u.UserName == model.LoginOrEmail);
|
||||
else
|
||||
{
|
||||
user = await _dbContext.Users.FirstOrDefaultAsync(u => u.UserName == model.LoginOrEmail);
|
||||
}
|
||||
|
||||
// Don't reveal that the user does not exist or is not confirmed
|
||||
@ -888,13 +892,16 @@ namespace Yavsc.Controllers
|
||||
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
|
||||
// Send an email with this link
|
||||
var code = await _userManager.GeneratePasswordResetTokenAsync(user);
|
||||
var callbackUrl = _siteSettings.Audience + "/Account/ResetPassword/" +
|
||||
HttpUtility.UrlEncode(user.Id) + "/" + HttpUtility.UrlEncode(code);
|
||||
|
||||
var f = this.HttpContext.Features;
|
||||
var callbackUrl = _siteSettings.ExternalUrl + "/Account/ResetPassword/" +
|
||||
HttpUtility.UrlEncode(user.Id) + "/" + HttpUtility.UrlEncode(code);
|
||||
|
||||
var sent = await _emailSender.SendEmailAsync(user.UserName, user.Email, _localizer["Reset Password"],
|
||||
_localizer["Please reset your password by "] + " <a href=\"" +
|
||||
callbackUrl + "\" >following this link</a>");
|
||||
return View("ForgotPasswordConfirmation", sent);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// If we got this far, something failed, redisplay form
|
||||
@ -918,8 +925,15 @@ namespace Yavsc.Controllers
|
||||
var user = await _userManager.FindByIdAsync(id);
|
||||
|
||||
if (user==null) return new BadRequestResult();
|
||||
if (!await _userManager.VerifyUserTokenAsync(user,
|
||||
_userManager.Options.Tokens.PasswordResetTokenProvider,
|
||||
"ResetPassword", code.Replace("%2f","/")))
|
||||
{
|
||||
return BadRequest("code");
|
||||
}
|
||||
// We just serve the form to reset here.
|
||||
return View(new ResetPasswordViewModel {
|
||||
return View(new ResetPasswordViewModel
|
||||
{
|
||||
Id = id,
|
||||
Code = code,
|
||||
Email = user.Email
|
||||
@ -944,9 +958,11 @@ namespace Yavsc.Controllers
|
||||
// Don't reveal that the user does not exist
|
||||
return RedirectToAction(nameof(AccountController.ResetPasswordConfirmation), "Account");
|
||||
}
|
||||
// code : "CfDJ8DmPlC3R8%2fNMqGlHZHZMwbjaXxgD3GW3H75Ubt+4Sbw%2fn%2fdg9X8Bll+CLIh%2fquI+Z96XEkx7bfrZiB+wpPb+b5%2ffgzgy+cQnKfX9J7%2fLNro+F3uE5JkXSlUc1WqVW2mVQrpWHjx1Dbn2n77TTGym3ttQoECsTR%2foo27dW9U11pmRJuTiwPBJZBOt0ffIRmgDDHh2f0VySTQEwjfRiLdCwctL%2fmh21ympJMKJl5PZnTVs"
|
||||
|
||||
if (user.Id != id) return BadRequest("userid");
|
||||
|
||||
var result = await _userManager.ResetPasswordAsync(user,
|
||||
HttpUtility.UrlDecode(code), model.Password);
|
||||
code.Replace("%2f","/"), model.Password);
|
||||
|
||||
if (result.Succeeded)
|
||||
{
|
||||
@ -1084,11 +1100,23 @@ namespace Yavsc.Controllers
|
||||
}
|
||||
|
||||
[HttpGet, Authorize("AdministratorOnly")]
|
||||
public IActionResult AdminDelete(string id)
|
||||
public IActionResult AdminDelete(string id, string? returnUrl=null)
|
||||
{
|
||||
return View(new UnregisterViewModel { UserId = id });
|
||||
return View(new UnregisterViewModel { UserId = id, ReturnUrl = returnUrl });
|
||||
}
|
||||
|
||||
[HttpPost, Authorize("AdministratorOnly")]
|
||||
public async Task<IActionResult> AdminDelete(UnregisterViewModel model)
|
||||
{
|
||||
var result = await DeleteUser(model.UserId);
|
||||
|
||||
if (!result.Succeeded)
|
||||
{
|
||||
AddErrors(result);
|
||||
return new BadRequestObjectResult(ModelState);
|
||||
}
|
||||
return View();
|
||||
}
|
||||
[HttpPost, Authorize]
|
||||
public async Task<IActionResult> Delete(UnregisterViewModel model)
|
||||
{
|
||||
@ -1116,21 +1144,6 @@ namespace Yavsc.Controllers
|
||||
return await _userManager.DeleteAsync(user);
|
||||
}
|
||||
|
||||
[HttpPost, Authorize("AdministratorOnly")]
|
||||
public async Task<IActionResult> AdminDelete(UnregisterViewModel model)
|
||||
{
|
||||
var result = await DeleteUser(model.UserId);
|
||||
|
||||
if (!result.Succeeded)
|
||||
{
|
||||
AddErrors(result);
|
||||
return new BadRequestObjectResult(ModelState);
|
||||
}
|
||||
return View();
|
||||
}
|
||||
|
||||
#region Helpers
|
||||
|
||||
private void AddErrors(IdentityResult result)
|
||||
{
|
||||
foreach (var error in result.Errors)
|
||||
@ -1139,15 +1152,5 @@ namespace Yavsc.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<ApplicationUser> GetCurrentUserAsync()
|
||||
{
|
||||
return await GetCurrentUserAsync(HttpContext.User.GetUserId());
|
||||
}
|
||||
private async Task<ApplicationUser> GetCurrentUserAsync(string id)
|
||||
{
|
||||
return await _userManager.FindByIdAsync(id);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ namespace Yavsc.Controllers
|
||||
IOptions<GoogleAuthSettings> googleSettings,
|
||||
IOptions<PayPalSettings> paypalSettings,
|
||||
IOptions<CompanyInfoSettings> cinfoSettings,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> SR,
|
||||
IStringLocalizer<ManageController> SR,
|
||||
ICalendarManager calendarManager,
|
||||
ILoggerFactory loggerFactory)
|
||||
{
|
||||
|
@ -15,11 +15,11 @@ namespace Yavsc.Controllers
|
||||
public class ActivityController : Controller
|
||||
{
|
||||
private readonly ApplicationDbContext _context;
|
||||
readonly IStringLocalizer<Yavsc.YavscLocalization> SR;
|
||||
readonly IStringLocalizer<ActivityController> SR;
|
||||
readonly ILogger logger;
|
||||
|
||||
public ActivityController(ApplicationDbContext context,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> SR,
|
||||
IStringLocalizer<ActivityController> SR,
|
||||
ILoggerFactory loggerFactory)
|
||||
{
|
||||
_context = context;
|
||||
|
@ -16,6 +16,8 @@ namespace Yavsc.Controllers
|
||||
using Models.Workflow;
|
||||
using Services;
|
||||
using Yavsc.Interface;
|
||||
using Yavsc.Models.Billing;
|
||||
using Yavsc.Models.Haircut;
|
||||
using Yavsc.Server.Helpers;
|
||||
using Yavsc.Settings;
|
||||
|
||||
@ -26,7 +28,7 @@ namespace Yavsc.Controllers
|
||||
protected GoogleAuthSettings _googleSettings;
|
||||
protected IYavscMessageSender _MessageSender;
|
||||
protected ITrueEmailSender _emailSender;
|
||||
protected IStringLocalizer _localizer;
|
||||
protected IStringLocalizer<CommandController> _localizer;
|
||||
protected SiteSettings _siteSettings;
|
||||
protected SmtpSettings _smtpSettings;
|
||||
protected ICalendarManager _calendarManager;
|
||||
@ -36,7 +38,7 @@ namespace Yavsc.Controllers
|
||||
IYavscMessageSender messageSender,
|
||||
UserManager<ApplicationUser> userManager,
|
||||
ICalendarManager calendarManager,
|
||||
IStringLocalizer<YavscLocalization> localizer,
|
||||
IStringLocalizer<CommandController> localizer,
|
||||
ITrueEmailSender emailSender,
|
||||
IOptions<SmtpSettings> smtpSettings,
|
||||
IOptions<SiteSettings> siteSettings,
|
||||
|
@ -25,7 +25,7 @@ namespace Yavsc.Controllers
|
||||
UserManager<ApplicationUser> userManager,
|
||||
IBillingService billing,
|
||||
ILoggerFactory loggerFactory,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> SR)
|
||||
IStringLocalizer<FrontOfficeController> SR)
|
||||
{
|
||||
_context = context;
|
||||
_userManager = userManager;
|
||||
|
@ -18,11 +18,9 @@ namespace Yavsc.Controllers
|
||||
using System.Globalization;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using System.Collections.Generic;
|
||||
using Yavsc.Models.Messaging;
|
||||
using PayPal.PayPalAPIInterfaceService.Model;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.AspNetCore.Identity.UI.Services;
|
||||
using Yavsc.Interface;
|
||||
using Yavsc.Settings;
|
||||
using Yavsc.Abstract.Models.Messaging;
|
||||
@ -31,12 +29,15 @@ namespace Yavsc.Controllers
|
||||
public class HairCutCommandController : CommandController
|
||||
{
|
||||
readonly PayPalSettings payPalSettings;
|
||||
private readonly IStringLocalizer<HairCutQuery> haircutLocalizer;
|
||||
|
||||
public HairCutCommandController(ApplicationDbContext context,
|
||||
IOptions<PayPalSettings> payPalSettings,
|
||||
IOptions<GoogleAuthSettings> googleSettings,
|
||||
IYavscMessageSender GCMSender,
|
||||
UserManager<ApplicationUser> userManager,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> localizer,
|
||||
IStringLocalizer<HairCutQuery> haircutLocalizer,
|
||||
IStringLocalizer<CommandController> localizer,
|
||||
ITrueEmailSender emailSender,
|
||||
IOptions<SmtpSettings> smtpSettings,
|
||||
IOptions<SiteSettings> siteSettings,
|
||||
@ -45,6 +46,7 @@ namespace Yavsc.Controllers
|
||||
calManager, localizer, emailSender, smtpSettings, siteSettings, loggerFactory)
|
||||
{
|
||||
this.payPalSettings = payPalSettings.Value;
|
||||
this.haircutLocalizer = haircutLocalizer;
|
||||
}
|
||||
|
||||
|
||||
@ -263,7 +265,7 @@ namespace Yavsc.Controllers
|
||||
model.SelectedProfile = brusherProfile;
|
||||
model.Client = await _userManager.FindByIdAsync(uid);
|
||||
_logger.LogInformation(JsonConvert.SerializeObject(model));
|
||||
var yaev = model.CreateNewHairCutQueryEvent(_localizer);
|
||||
var yaev = model.CreateNewHairCutQueryEvent(this.haircutLocalizer);
|
||||
|
||||
if (pro.AcceptPublicContact)
|
||||
{
|
||||
|
@ -16,11 +16,11 @@ namespace Yavsc.Controllers
|
||||
public class ProjectController : Controller
|
||||
{
|
||||
private readonly ApplicationDbContext _context;
|
||||
readonly IStringLocalizer<Yavsc.YavscLocalization> _localizer;
|
||||
readonly IStringLocalizer<ProjectController> _localizer;
|
||||
readonly IStringLocalizer<BugController> _bugLocalizer;
|
||||
|
||||
public ProjectController(ApplicationDbContext context,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> localizer,
|
||||
IStringLocalizer<ProjectController> localizer,
|
||||
IStringLocalizer<BugController> bugLocalizer
|
||||
)
|
||||
{
|
||||
|
@ -156,13 +156,13 @@ public static class HostingExtensions
|
||||
policy.RequireAuthenticatedUser()
|
||||
.RequireClaim("scope", "scope2");
|
||||
});
|
||||
|
||||
|
||||
options.AddPolicy("Performer", policy =>
|
||||
{
|
||||
policy
|
||||
.RequireAuthenticatedUser()
|
||||
.RequireClaim(Constants.RoleClaimType,
|
||||
new string[] {Constants.PerformerGroupName, Constants.AdminGroupName})
|
||||
new string[] { Constants.PerformerGroupName, Constants.AdminGroupName })
|
||||
;
|
||||
});
|
||||
options.AddPolicy("AdministratorOnly", policy =>
|
||||
@ -390,7 +390,7 @@ public static class HostingExtensions
|
||||
var smtpSettings = services.GetRequiredService<IOptions<SmtpSettings>>();
|
||||
var payPalSettings = services.GetRequiredService<IOptions<PayPalSettings>>();
|
||||
var googleAuthSettings = services.GetRequiredService<IOptions<GoogleAuthSettings>>();
|
||||
var localization = services.GetRequiredService<IStringLocalizer<YavscLocalization>>();
|
||||
var localization = services.GetRequiredService<IStringLocalizer<Startup>>();
|
||||
Startup.Configure(app, siteSettings, smtpSettings,
|
||||
payPalSettings, googleAuthSettings, localization, loggerFactory,
|
||||
app.Environment.EnvironmentName);
|
||||
@ -398,50 +398,53 @@ public static class HostingExtensions
|
||||
app.InitializeDatabase();
|
||||
return app;
|
||||
}
|
||||
private static void InitializeDatabase(this IApplicationBuilder app)
|
||||
{
|
||||
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
|
||||
private static void InitializeDatabase(this IApplicationBuilder app)
|
||||
{
|
||||
serviceScope.ServiceProvider.GetRequiredService<PersistedGrantDbContext>().Database.Migrate();
|
||||
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
|
||||
{
|
||||
serviceScope.ServiceProvider.GetRequiredService<PersistedGrantDbContext>().Database.Migrate();
|
||||
|
||||
var context = serviceScope.ServiceProvider.GetRequiredService<ConfigurationDbContext>();
|
||||
try
|
||||
{
|
||||
context.Database.Migrate();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// TODO log
|
||||
}
|
||||
|
||||
if (!context.Clients.Any())
|
||||
{
|
||||
foreach (var client in Config.Clients)
|
||||
{
|
||||
context.Clients.Add(client.ToEntity());
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
var context = serviceScope.ServiceProvider.GetRequiredService<ConfigurationDbContext>();
|
||||
|
||||
if (!context.IdentityResources.Any())
|
||||
{
|
||||
foreach (var resource in Config.IdentityResources)
|
||||
try
|
||||
{
|
||||
context.IdentityResources.Add(resource.ToEntity());
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
|
||||
if (!context.ApiScopes.Any())
|
||||
{
|
||||
foreach (var resource in Config.ApiScopes)
|
||||
|
||||
context.Database.Migrate();
|
||||
|
||||
if (!context.Clients.Any())
|
||||
{
|
||||
foreach (var client in Config.Clients)
|
||||
{
|
||||
context.Clients.Add(client.ToEntity());
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
|
||||
if (!context.IdentityResources.Any())
|
||||
{
|
||||
foreach (var resource in Config.IdentityResources)
|
||||
{
|
||||
context.IdentityResources.Add(resource.ToEntity());
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
|
||||
if (!context.ApiScopes.Any())
|
||||
{
|
||||
foreach (var resource in Config.ApiScopes)
|
||||
{
|
||||
context.ApiScopes.Add(resource.ToEntity());
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
}
|
||||
catch (InvalidOperationException ex)
|
||||
{
|
||||
context.ApiScopes.Add(resource.ToEntity());
|
||||
app.Properties["DegradedDBContext"] = ex.Message;
|
||||
}
|
||||
context.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void LoadGoogleConfig(IConfigurationRoot configuration)
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ namespace Yavsc.Helpers
|
||||
|
||||
|
||||
public static HairCutQueryEvent CreateNewHairCutQueryEvent(this HairCutQuery query,
|
||||
IStringLocalizer SR)
|
||||
IStringLocalizer<HairCutQuery> SR)
|
||||
{
|
||||
string evdate = query.EventDate?.ToString("dddd dd/MM/yyyy à hh:mm")??"[pas de date spécifiée]";
|
||||
string address = query.Location?.Address??"[pas de lieu spécifié]";
|
||||
@ -42,7 +42,7 @@ namespace Yavsc.Helpers
|
||||
string strprestation = query.Description;
|
||||
|
||||
var yaev = query.CreateEvent("NewHairCutQuery",
|
||||
string.Format(ResourcesHelpers.GlobalLocalizer["HairCutQueryValidation"],query.Client.UserName),
|
||||
string.Format(SR["HairCutQueryValidation"],query.Client.UserName),
|
||||
$"{query.Client.Id}");
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@ USER_AND_GROUP=www-data:www-data
|
||||
SERVICE_PROD=yavsc
|
||||
DOTNET_FRAMEWORK=net9.0
|
||||
|
||||
all:
|
||||
all: css js
|
||||
dotnet build
|
||||
|
||||
showConfig:
|
||||
@ -35,4 +35,6 @@ pushInProd: publish
|
||||
%.min.css: %.css
|
||||
jsmin < $^ > $@
|
||||
|
||||
css: wwwroot/css/site.css
|
||||
css: wwwroot/css/site.min.css
|
||||
|
||||
js: wwwroot/js/site.min.js
|
||||
|
3400
src/Yavsc/Migrations/20250825123014_pending.Designer.cs
generated
Normal file
3400
src/Yavsc/Migrations/20250825123014_pending.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
40
src/Yavsc/Migrations/20250825123014_pending.cs
Normal file
40
src/Yavsc/Migrations/20250825123014_pending.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Yavsc.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class pending : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Client");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Client",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "text", nullable: false),
|
||||
AccessTokenLifetime = table.Column<int>(type: "integer", nullable: false),
|
||||
Active = table.Column<bool>(type: "boolean", nullable: false),
|
||||
DisplayName = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
|
||||
LogoutRedirectUri = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: true),
|
||||
RedirectUri = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: true),
|
||||
RefreshTokenLifeTime = table.Column<int>(type: "integer", nullable: false),
|
||||
Secret = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: false),
|
||||
Type = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Client", x => x.Id);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -429,47 +429,6 @@ namespace Yavsc.Migrations
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yavsc.Models.Auth.Client", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("AccessTokenLifetime")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("Active")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("DisplayName")
|
||||
.IsRequired()
|
||||
.HasMaxLength(128)
|
||||
.HasColumnType("character varying(128)");
|
||||
|
||||
b.Property<string>("LogoutRedirectUri")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("character varying(512)");
|
||||
|
||||
b.Property<string>("RedirectUri")
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("character varying(512)");
|
||||
|
||||
b.Property<int>("RefreshTokenLifeTime")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Secret")
|
||||
.IsRequired()
|
||||
.HasMaxLength(512)
|
||||
.HasColumnType("character varying(512)");
|
||||
|
||||
b.Property<int>("Type")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Client");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yavsc.Models.Auth.Scope", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
|
92
src/Yavsc/Resources/Controllers/AccountController.en.resx
Normal file
92
src/Yavsc/Resources/Controllers/AccountController.en.resx
Normal file
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<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="ConfirmYourAccountBody">
|
||||
<value>You successfully created your {0} account,
|
||||
but your e-mail address is not yet confirmed.
|
||||
Please, in order to validate it, follow this link <{1}>.
|
||||
|
||||
Thanks.
|
||||
--
|
||||
{0} - {2} <https://{3}></value>
|
||||
</data>
|
||||
<data name="EmailSentForConfirm">
|
||||
<value>An email has been sent to confirm your addresse.</value>
|
||||
</data>
|
||||
<data name="ConfirmYourAccountTitle">
|
||||
<value>Please, confirm your e-mail</value>
|
||||
</data>
|
||||
|
||||
<data name="ConfirmYourAccountBody">
|
||||
<value>Ypu've successfully created an account {0},
|
||||
but you still need to confirm your email.
|
||||
Without this confirmation, you won't be able to login.
|
||||
|
||||
Please, follow this link to confirm your account : <{1}>.
|
||||
|
||||
--
|
||||
{0} - {2} <{3}></value>
|
||||
</data>
|
||||
<data name="Reset Password"><value>Ré-initialiser votre mot de passe</value></data>
|
||||
<data name="Reset password confirmation"><value>Confirmation de ré-initialisation du mot de passe</value></data>
|
||||
</root>
|
66
src/Yavsc/Resources/Controllers/AccountController.pt.resx
Normal file
66
src/Yavsc/Resources/Controllers/AccountController.pt.resx
Normal file
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<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="Reset Password"><value>Ré-initialiser votre mot de passe</value></data>
|
||||
<data name="Reset password confirmation"><value>Confirmation de ré-initialisation du mot de passe</value></data>
|
||||
</root>
|
94
src/Yavsc/Resources/Controllers/AccountController.resx
Normal file
94
src/Yavsc/Resources/Controllers/AccountController.resx
Normal file
@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<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="ConfirmYourAccountBody">
|
||||
<value>Vous avez créé avec succès votre compte {0},
|
||||
mais votre adresse e-mail reste à confirmer.
|
||||
|
||||
Pour ce faire, veuillez, s'il vous plait, suivre le lien suivant
|
||||
dans votre navigateur favori : <{1}>.
|
||||
|
||||
--
|
||||
{0} - {2} <{3}></value>
|
||||
</data>
|
||||
<data name="ConfirmYourAccountTitle">
|
||||
<value>S'il vous plait, confirmez votre addresse e-mail</value>
|
||||
</data>
|
||||
|
||||
<data name="AccountEmailFactorBody">
|
||||
<value>Votre compte est endurci d'une requisition d'un second facteur d'identification.
|
||||
Une nouvelle connection depuis un navigateur web nécéssite votre autorisation.
|
||||
Vous pouvez l'accorder en suivant le lien suivant : <{1}>.
|
||||
|
||||
Votre code dáctivation est : {4}
|
||||
|
||||
Vour pourrez cochez la case "Se souvenir de ce navigateur" pour conserver cette autorisation pour ce navigateur.
|
||||
{0} - {2} <{3}></value>
|
||||
</data>
|
||||
<data name="EmailSentForConfirm">
|
||||
<value>Un courrier a été envoyé pour confirmation de l'adresse e-mail .</value>
|
||||
</data>
|
||||
|
||||
<data name="Reset Password"><value>Ré-initialiser votre mot de passe</value></data>
|
||||
<data name="Reset password confirmation"><value>Confirmation de ré-initialisation du mot de passe</value></data>
|
||||
</root>
|
@ -70,4 +70,4 @@
|
||||
<data name="Buying"><value>Offre d'achat</value></data>
|
||||
<data name="ServiceProposal">Offre de service<value></value></data>
|
||||
<data name="For"><value>Pour</value></data>
|
||||
</root>
|
||||
</root>
|
@ -772,18 +772,7 @@
|
||||
<value>Invalid user name.
|
||||
Valid caracters are: underscore '_', '-', 'a' - 'z', 'A' - 'Z', '0' - '9', the single quote ('), the space and the dot.</value>
|
||||
</data>
|
||||
<data name="EmailSentForConfirm">
|
||||
<value>An email has been sent to confirm your addresse.</value>
|
||||
</data>
|
||||
<data name="ConfirmYourAccountTitle"><value>Please, confirm your e-mail</value></data>
|
||||
<data name="ConfirmYourAccountBody"><value>You successfully created your {0} account,
|
||||
but your e-mail address is not yet confirmed.
|
||||
Please, in order to validate it, follow this link <{1}>.
|
||||
|
||||
Thanks.
|
||||
--
|
||||
{0} - {2} <https://{3}></value>
|
||||
</data>
|
||||
<data name="Instrumentation"><value>Instrumentation</value></data>
|
||||
<data name="Partenariat"><value>Co-working</value></data>
|
||||
</root>
|
122
src/Yavsc/Resources/Yavsc.YavscLocalisation.pt.resx
Normal file
122
src/Yavsc/Resources/Yavsc.YavscLocalisation.pt.resx
Normal file
@ -0,0 +1,122 @@
|
||||
<?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="Please reset your password by following this link:"><value>Por favor use o seguinte link para redefinir sua senha:</value></data>
|
||||
<data name="Reset Password"><value>Redefinir sua senha</value></data>
|
||||
</root>
|
@ -251,7 +251,6 @@
|
||||
<data name="HalfLong"><value>mi-long</value></data>
|
||||
<data name="MobileHairCut"><value>Coiffure à domicile</value></data>
|
||||
<data name="HairCutQuery"><value>Préstation en coiffure à domicile</value></data>
|
||||
<data name="HairCutQueryValidation"><value>Une demande (de {0}) en coiffure à domicile vient d'être validée</value></data>
|
||||
<data name="Hide source"><value>Cacher le texte source de l'article</value></data>
|
||||
<data name="Home"><value>Accueil</value></data>
|
||||
<data name="Hide"><value>Cacher</value></data>
|
||||
@ -462,7 +461,6 @@
|
||||
<data name="PasswordConfirm"><value>Confirmation du mot de passe</value></data>
|
||||
<data name="ConfirmPassword"><value>Confirmation du mot de passe</value></data>
|
||||
<data name="ErrorSendingEmailForConfirm"><value>L'envoi de de courrier pour confirmation de l'adresse e-mail a échoué.</value></data>
|
||||
<data name="EmailSentForConfirm"><value>Un courrier a été envoyé pour confirmation de l'adresse e-mail .</value></data>
|
||||
|
||||
<data name="AccountEmailFactorTitle"><value>Le second facteur de votre identification</value></data>
|
||||
<data name="AccountEmailFactorBody"><value>Votre compte est endurci d'une requisition d'un second facteur d'identification.
|
||||
@ -473,15 +471,7 @@ Votre code dáctivation est : {4}
|
||||
|
||||
Vour pourrez cochez la case "Se souvenir de ce navigateur" pour conserver cette authorisation pour ce navigateur.
|
||||
{0} - {2} <{3}></value></data>
|
||||
<data name="ConfirmYourAccountTitle"><value>S'il vous plait, confirmez votre addresse e-mail</value></data>
|
||||
<data name="ConfirmYourAccountBody"><value>Vous avez créé avec succès votre compte {0},
|
||||
mais votre adresse e-mail reste à confirmer.
|
||||
|
||||
Pour ce faire, veuillez, s'il vous plait, suivre le lien suivant
|
||||
dans votre navigateur favori : <{1}>.
|
||||
|
||||
--
|
||||
{0} - {2} <{3}></value></data>
|
||||
|
||||
<data name="BadStringLength"><value>Taille maximale: {0} caractère.</value></data>
|
||||
<data name="DetailledMinMaxStringLength"><value>Ce champ est
|
||||
d'au moins {0} et d'au plus {1} caractère(s) (manquent {2}) ou ({3} en trop).</value></data>
|
@ -13,7 +13,7 @@ public class Startup
|
||||
IOptions<SmtpSettings> smtpSettings,
|
||||
IOptions<PayPalSettings> payPalSettings,
|
||||
IOptions<GoogleAuthSettings> googleSettings,
|
||||
IStringLocalizer<YavscLocalization> localizer,
|
||||
IStringLocalizer<Startup> localizer,
|
||||
ILoggerFactory loggerFactory,
|
||||
string environmentName)
|
||||
{
|
||||
|
@ -16,10 +16,10 @@ namespace Yavsc.ViewComponents
|
||||
{
|
||||
readonly ApplicationDbContext dbContext;
|
||||
readonly IBillingService billing;
|
||||
readonly IStringLocalizer<Yavsc.YavscLocalization> localizer;
|
||||
readonly IStringLocalizer<BillViewComponent> localizer;
|
||||
|
||||
public BillViewComponent(ApplicationDbContext dbContext,
|
||||
IStringLocalizer<Yavsc.YavscLocalization> localizer,
|
||||
IStringLocalizer<BillViewComponent> localizer,
|
||||
IBillingService billing)
|
||||
{
|
||||
this.billing = billing;
|
||||
|
10
src/Yavsc/Views/Account/AccountCreated.cshtml
Normal file
10
src/Yavsc/Views/Account/AccountCreated.cshtml
Normal file
@ -0,0 +1,10 @@
|
||||
@{
|
||||
ViewData["Title"] = "Account creation success";
|
||||
|
||||
}
|
||||
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
Your account has successfully been created.
|
||||
|
||||
<a asp-action="Index" asp-controller="Home">Return to home</a>
|
14
src/Yavsc/Views/Account/AdminDelete.cshtml
Normal file
14
src/Yavsc/Views/Account/AdminDelete.cshtml
Normal file
@ -0,0 +1,14 @@
|
||||
@model UnregisterViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Unregister";
|
||||
}
|
||||
|
||||
<h2>@ViewData["Title"].</h2>
|
||||
|
||||
<form asp-controller="Account" asp-action="AdminDelete" method="post" class="form-horizontal" role="form">
|
||||
|
||||
@Html.Hidden("UserId")
|
||||
@Html.Hidden("ReturnUrl")
|
||||
<input type="submit" value="Unregister" class="btn btn-primary" />
|
||||
</form>
|
||||
|
12
src/Yavsc/Views/Account/AdminSendConfirationEmail.cshtml
Executable file
12
src/Yavsc/Views/Account/AdminSendConfirationEmail.cshtml
Executable file
@ -0,0 +1,12 @@
|
||||
@model Yavsc.Abstract.Manage.EmailSentViewModel
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "S'il vous plait, veuillez confirmer votre adresse e-mail";
|
||||
}
|
||||
|
||||
<h2>@ViewData["Title"].</h2>
|
||||
<div>
|
||||
<p>
|
||||
Un message vient d'être envoyé à l'adresse e-mail ( @Model.EMail , id:@Model.MessageId ).
|
||||
</p>
|
||||
</div>
|
@ -1,7 +1,9 @@
|
||||
@model ResetPasswordViewModel
|
||||
|
||||
<form asp-route-id="@Model.Id" asp-route-code="@Model.Code">
|
||||
<p>@Model.Email</p>
|
||||
<p>Your email : <code>@Model.Email</code></p>
|
||||
<input type="hidden" name="Email" value="@Model.Email" />
|
||||
@Html.ValidationSummary()
|
||||
<div class="form-group">
|
||||
<label asp-for="Password"></label>
|
||||
<input class="form-control" placeholder="Password" asp-for="Password" autofocus>
|
||||
@ -10,6 +12,7 @@
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<input class="form-control" placeholder="ConfirmPassword" asp-for="ConfirmPassword" autofocus>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" name="button" value="Reset">Reset Password</button>
|
||||
|
||||
</form>
|
||||
|
7
src/Yavsc/Views/Account/ResetPasswordConfirmation fr.cshtml
Executable file
7
src/Yavsc/Views/Account/ResetPasswordConfirmation fr.cshtml
Executable file
@ -0,0 +1,7 @@
|
||||
@{
|
||||
ViewData["Title"] = "Reset password confirmation";
|
||||
}
|
||||
|
||||
<h1>@ViewData["Title"].</h1>
|
||||
<p>Votre mot de passe a été ré-initialisé.
|
||||
<a href="~/signin">Cliquez ici pour vous connecter</a>.</p>
|
8
src/Yavsc/Views/Account/ResetPasswordConfirmation.cshtml
Executable file
8
src/Yavsc/Views/Account/ResetPasswordConfirmation.cshtml
Executable file
@ -0,0 +1,8 @@
|
||||
@{
|
||||
ViewData["Title"] = "Reset password confirmation";
|
||||
}
|
||||
|
||||
<h1>@ViewData["Title"].</h1>
|
||||
<p>
|
||||
Your password has been reset. Please <a href="~/signin">Click here to log in</a>.
|
||||
</p>
|
@ -52,9 +52,11 @@
|
||||
<dd>
|
||||
@Html.DisplayFor(m=>user.Email)
|
||||
@if (!user.EmailConfirmed) {
|
||||
<a asp-action="AdminSendConfirationEmail" asp-route-id="@user.Id" >Envoyer une demande de confirmation</a>
|
||||
<a class="btn btn-primary"
|
||||
asp-action="AdminSendConfirationEmail" asp-route-id="@user.Id" >Envoyer une demande de confirmation</a>
|
||||
}
|
||||
<a asp-action="AdminDelete" asp-route-id="@user.Id" >Supprimer</a>
|
||||
<a asp-action="AdminDelete" asp-route-id="@user.Id"
|
||||
class="btn btn-secondary">Supprimer</a>
|
||||
</dd>
|
||||
</dl>
|
||||
</td>
|
||||
|
@ -37,7 +37,7 @@
|
||||
@addTagHelper *, Yavsc
|
||||
|
||||
@inject IAuthorizationService AuthorizationService
|
||||
@inject Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer<Yavsc.YavscLocalization> SR
|
||||
@inject Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer<Startup> SR
|
||||
@inject Microsoft.Extensions.Options.IOptions<SiteSettings> SiteSettings
|
||||
@inject SignInManager<ApplicationUser> SignInManager
|
||||
@inject UserManager<ApplicationUser> UserManager
|
||||
|
@ -1 +1 @@
|
||||
{"AdditionalData":{},"Alg":"RS256","Crv":null,"D":"BBXYWCFMOYOt4QTTDtjmvrbhj20p07lIjqZv6kdsEUdkrsc0p2stHYp6yT8SLxPAqMgSiFmr29jHdS56gVUa9FEe1H7DXDZszgZ8JRGWaIa2fe2_2vD-hPzFxJNmS5zlo7mFaH0lL40imi7qyzDt3lmvZnBEhwNpGeg2Ge5rmDsT9w5zeDAfLnOOC4ghUNFfQnmVZQfjsXPt46MDkj94ZInOwqJBxbjhNJSvJWkW9y3PG02bPriBx6bsHdc7yPilsqICnnLRWxb79n6XJHZ-gHO1l-eeXwAj5gJI-CX_V7INjBAuNFTMJrCbf-hpghVadsIKLLK6QOeRbdA_6JzGQQ","DP":"EaH8Zw1B6y4cJTb9EzzzPLW20YXihxB8a1ywnYOekqlRS0vUJI8hh9IayWu56PKnIwVYnWlyIn-YreBTBpRubuyc26cyEYsnqGi44K0nnN3n43LBl5BpenI_AE9gLNmP2TAngPD0vINpg9fqTXNutEsNBF_6BLkqzC52rGLMGNk","DQ":"BWlE0UknVFCZ99HL3170Vz7niIVf9zKTEZACjWfBephHjVgeFFOZCrd_3TRGvaG8FVebYJn_ARiFLYuJOXG7u_VafR5MpXxd6Qzty8B4MF3jPEiYyqAylxPh1Uwk2Dl20evd4UoCWHI6Klb8gAAL54hiqKyoYdR24uAZ8YxWB6k","E":"AQAB","K":null,"KeyId":"131338364F1631C3CFBD59BF8F32A4B0","KeyOps":[],"Kid":"131338364F1631C3CFBD59BF8F32A4B0","Kty":"RSA","N":"xymIJugCkRasJ1zA587Kq5GafxcnVXXNVU-kuwCCpAwNndgn2uXCT4WuEDkFK3gcSQKZT_SdM9rMIeJcQjHybtgJs8A-AwGG2JKpppMJ3EkxD_p_-Q1q9D-_QcsZhRU_yP8i-jO8FgYfez4z0TqJWj3nxo3c83u8tkzO1UC4FBEKGlDG993AeqpmaEeycf5bBWitQQu-xy9NgsqzmtVMZtChMtC50fzmbbKkwuOc7506Lw6vzRkBCI8DpqqN50-yL3t7mbfqwxm0OIQ4mzN-n87gaCAJRzqxFj1nQSzmJSmQ7_-nGPSLH_BR3SaPRBQBrArzZyzU7FsMYdAjrTRGoQ","Oth":[],"P":"8RnoBTdVG4Igi3a_ps36pAX09N_nDeM8uG9Oyt5NWr1k0dv4iwtGSV4W8QTTHf5m9ZxQsQIPDxncSwr_WpwfKGGfxGVcESgtDkf10dq8Ajex4NefjnKtGSRX8dAQCRDcoN_v0k32kj90PImzseYM6S4p81dZLkOX0DX9sf3IU5k","Q":"03gsWqv7Vtlr_YWGXFQ4gyq1kew6tNMCAWLIzYTKeN1evYuXCsoEUoP7OPYRsZvQ13_hgEk2qfvEeZ8HoTIY_PXXKS8iUHNQXAaKaHSeRtfKmO7qDUd5jeMihvE2295FNf3VIM24oK3QJ0FPrt8qOIarcGa-lgj2llyiEId98Ek","QI":"OAdgkRIwrQ4X_91WW7bjC37Atn7yH8YBnjHHLSwmeaXkc4JOhdeXLVYIyVKoWqdRIhaT8q4liGA5F7Lbwg4cFQ8tUEjmIbacaRxpcFYYvhQcKGA-q1MxFK2ZwNUxMjc_20ZcH7ohneGNr63im_cUGT78fMzE_YBTbAp1Sxkd0fk","Use":null,"X":null,"X5c":[],"X5t":null,"X5tS256":null,"X5u":null,"Y":null,"KeySize":2048,"HasPrivateKey":true,"CryptoProviderFactory":{"CryptoProviderCache":{},"CustomCryptoProvider":null,"CacheSignatureProviders":true,"SignatureProviderObjectPoolCacheSize":16}}
|
||||
{"AdditionalData":{},"Alg":"RS256","Crv":null,"D":"HQxDb0hC8hkvwiC9eL7Xgi3oxVuD2KhYRf2LgdVbTNNp7hof2ZxHQaRJBUjXXWu5dgjEFTbYHugydnsUb-y9fO-Q_k2mHYrCwwRGRR8_B1bqX6Or98PDKMLj8JOCoRWUe238hUjqdfm3X-wjLco9iEe86UUWnhPhsTKQ8hGuI7vo5c5BEF9Y3T9duITK0c3hgJQGujLUQLbCCP2MX0BR-tmvnBPV1mPe5fMkW79CymmlBdc8RjPNA_YLtLD4znZGoh7Fr_G1WpO6HdDyqnjqIof9QFSY9zjGissOhs6k5xZrTdego6giHk_hhxLsHvf9lekfL1XcOt97j28mooXGUQ","DP":"5gUJNJI-z3swRqAX0YSZxKjD1bbOl-HgEU9Bkrz_U6myVGziVnjrrLT92ymu7XiERwhRm4Hv-UNgCSipUA5wkTNw_qANbibcMAqjLqtXtC9OOraE9zw0fw72BzFp3BF2AvaUZlByyr45IJGyVVOg-AxCgaLinoWa15hjpVVLBck","DQ":"MVwIv2v0k93-nqLkTfU7UXe5lifNfqwK_h6wFrlPv2eRiPFs016-9epfAYz4w0KqHaFzZtK-_XDet_f6-Vommn4DjahTzBbyUWKPxo2jmu06hne8naoeLYP0VqRtbVVlq_rP5VKwb3SMnxj02FjpuDdSvbaEgJiCLjfv-mP3x8c","E":"AQAB","K":null,"KeyId":"31CBEC0AA49B244C218F53DA8D15FAF8","KeyOps":[],"Kid":"31CBEC0AA49B244C218F53DA8D15FAF8","Kty":"RSA","N":"vrBmdOxP7dksWCfJieoorbBgxiPlgcY1QpBbESso_7XpcGbtwK7Nmfbe_sy_jtdEi586MQBb6g7W663hnQyZ5j9etC6uNo5XkqJ4oAPvjWjjdx7HPyjhkSOgj6dS-mGNCzn36ZLkZacAxvDhxh409QGWEe7MpFB6ZRK9bj7hn77FMFvTnI71YU3sL3w35W3wjw30jyw4oaAA6cDA0dLLSc5wutu76KPxcyQGOhXtcOnUd0c1XYuOIAffg6EcmGSe5nF5iCZYk9Y7MuYKH07w6cVlPgKuOATSOuMSo7bp7Kgd-tuqvelJbGryNoAd4V_Fo6pgLbJoY8IeZDr9CDxZgw","Oth":[],"P":"8WfFywgbOmCiJwupMdgNF0VsdZ5VcgsAwlkrLSWAvIzihD99Fz3J9VPYnLtXW5b144CfJLz8nEnMDYPTqYw_dZ2rT9rsiUUvbVzeKvDVTjDLYNvdhZeseyoXIVfoHStoAdKXQqdhcVtDcuv3E0zszfuAP-jMMh0cwlTfscjauz0","Q":"yjexMUjUY5RvhN127pC4NKqkD5PABxDgt3w8ENuJZbAo-dJ72Ay2MFGAhNMVp-DZIijS_OntyqTNLADhFmf8nh6ZNRyvRYNPpvkvb0qf4QgSn2TiXm3wJrKG8mTJuuFWnUDTf3D2GLFAHk2MtAemh3-C34SezLHORjkaEvqLs78","QI":"KQRvX-At5Rb16A0R7hE0JOB2oNJKcbAoQHKttFBU9KeQo17TIBzt4R_ABswbWjmLRN_mzfaag8nrN-mOeeOzzgqt3xMjibRB4HJ0MBndt5wi4SEyHt3Me_-7fUN85SZR6DsNt2w05QTojsUBq4ah4RXAXIT5SqwcUE4ztBbM5Vw","Use":null,"X":null,"X5c":[],"X5t":null,"X5tS256":null,"X5u":null,"Y":null,"KeySize":2048,"HasPrivateKey":true,"CryptoProviderFactory":{"CryptoProviderCache":{},"CustomCryptoProvider":null,"CacheSignatureProviders":true,"SignatureProviderObjectPoolCacheSize":16}}
|
7
src/Yavsc/wwwroot/css/site.min.css
vendored
7
src/Yavsc/wwwroot/css/site.min.css
vendored
@ -1 +1,6 @@
|
||||
.welcome-page .logo{width:64px;}.icon-banner{width:32px;}.body-container{margin-top:60px;padding-bottom:40px;}.welcome-page li{list-style:none;padding:4px;}.logged-out-page iframe{display:none;width:0;height:0;}.grants-page .card{margin-top:20px;border-bottom:1px solid #d3d3d3;}.grants-page .card .card-title{font-size:120%;font-weight:bold;}.grants-page .card .card-title img{width:100px;height:100px;}.grants-page .card label{font-weight:bold;}
|
||||
.grants-page.card{margin-top:20px;border-bottom:1px solid lightgray;}.grants-page.card.card-title{font-size:120%;font-weight:bold;}.grants-page.card.card-title img{width:100px;height:100px;}.grants-page.card label{font-weight:bold;}.navbar-dark.navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");}
|
||||
div.carousel-inner>div.item>div.carousel-caption-s{margin:.5em;background-color:rgba(0,0,0,0.6);color:#ffffc8;font-weight:bold;padding:.5em;}
|
||||
img.blogphoto{max-width:100%;max-height:100%;}
|
||||
input[type='checkbox']{appearance:auto;min-width:1em;min-height:1em;}.container{background-color:#000000d5;color:#fff;padding:.5em;margin:.5em;}.post{background-color:#000000dd;color:#d1d1d1;padding:2.3em;border-radius:2em;border:solid#441515a4 2pt;}.actiongroup{float:right;margin:.5em;}.float-left{float:left;margin:.5em;}
|
||||
a{color:aquamarine;background-color:black;}
|
||||
a.close{cursor:pointer;}
|
@ -13,3 +13,4 @@ var setUiCult = function(lngspec) {
|
||||
document.cookie = 'ASPNET_CULTURE=c=' + lngspec + '|uic=' + lngspec;
|
||||
location.reload();
|
||||
};
|
||||
|
||||
|
3
src/Yavsc/wwwroot/js/site.min.js
vendored
3
src/Yavsc/wwwroot/js/site.min.js
vendored
@ -1 +1,2 @@
|
||||
var notifClick=function(i){0<i&&$.get("/api/dimiss/click/"+i)},setUiCult=function(i){document.cookie="ASPNET_CULTURE=c="+i+"|uic="+i,location.reload()};
|
||||
|
||||
var notifClick=function(nid){if(nid>0){$.get({url:'/api/dimiss/click/'+nid,success:$('div[data-nid='+nid+']').remove()});}};var setUiCult=function(lngspec){document.cookie='ASPNET_CULTURE=c='+lngspec+'|uic='+lngspec;location.reload();};
|
Reference in New Issue
Block a user