migration applied
This commit is contained in:
@ -7,21 +7,21 @@ namespace Yavsc
|
|||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public string Slogan { get; set; }
|
public string Slogan { get; set; }
|
||||||
|
|
||||||
public string StyleSheet { get; set; }
|
public string StyleSheet { get; set; }
|
||||||
public string FavIcon { get; set; }
|
public string FavIcon { get; set; }
|
||||||
public string Logo { get; set; }
|
public string Logo { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Conceptually,
|
/// Conceptually,
|
||||||
/// This authorisation server only has this present site as unique audience.
|
/// This authorisation server only has this present site as unique audience.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Audience { get; set; }
|
public string Audience { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// it's a very small company, with one domaine name only,
|
/// it's a very small company, with one domaine name only,
|
||||||
/// so let it be the same as in the Audience field.
|
/// so let it be the same as in the Audience field.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Authority { get; set; }
|
public string Authority { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Owner's email
|
/// Owner's email
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -34,16 +34,16 @@ namespace Yavsc
|
|||||||
public Contact Admin { get; set; }
|
public Contact Admin { get; set; }
|
||||||
|
|
||||||
public string DataDir { get; set; }
|
public string DataDir { get; set; }
|
||||||
public string Avatars { get; set; }
|
public string Avatars { get; set; } = "avatars";
|
||||||
public long Quota { get; set; }
|
public long Quota { get; set; }
|
||||||
public string Blog { get; set; }
|
public string Blog { get; set; } = "blogs";
|
||||||
public string Bills { get; set; }
|
public string Bills { get; set; } = "bills";
|
||||||
public string GitRepository { get; set; } = "sources";
|
public string GitRepository { get; set; } = "sources";
|
||||||
|
|
||||||
public string BusinessName { get; set; }
|
public string BusinessName { get; set; }
|
||||||
public string Street { get; set; }
|
public string Street { get; set; }
|
||||||
public string PostalCode { get; set; }
|
public string PostalCode { get; set; }
|
||||||
public string CountryCode { get; set; }
|
public string CountryCode { get; set; }
|
||||||
|
|
||||||
public string HomeViewName { get; set; }
|
public string HomeViewName { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -51,7 +51,7 @@ namespace Yavsc
|
|||||||
/// generated pdf files using pandoc
|
/// generated pdf files using pandoc
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The temporary directory to use</returns>
|
/// <returns>The temporary directory to use</returns>
|
||||||
public string TempDir { get; set; } = "Temp";
|
public string TempDir { get; set; } = "temp";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Only one performer will capture payments
|
/// Only one performer will capture payments
|
||||||
|
@ -1,31 +1,132 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Yavsc.Models;
|
using Yavsc.Models;
|
||||||
|
using Yavsc.Helpers;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Localization;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.AspNetCore.Diagnostics;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
namespace Yavsc.Controllers;
|
namespace Yavsc.Controllers
|
||||||
|
|
||||||
public class HomeController : Controller
|
|
||||||
{
|
{
|
||||||
private readonly ILogger<HomeController> _logger;
|
|
||||||
|
|
||||||
public HomeController(ILogger<HomeController> logger)
|
[AllowAnonymous]
|
||||||
|
public class HomeController : Controller
|
||||||
{
|
{
|
||||||
_logger = logger;
|
readonly ApplicationDbContext _dbContext;
|
||||||
}
|
|
||||||
|
|
||||||
public IActionResult Index()
|
readonly IHtmlLocalizer _localizer;
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IActionResult Privacy()
|
private SiteSettings siteSettings;
|
||||||
{
|
public HomeController(ILogger<HomeController> logger,
|
||||||
return View();
|
IHtmlLocalizer<Startup> localizer,
|
||||||
}
|
ApplicationDbContext context,
|
||||||
|
IOptions<SiteSettings> settingsOptions)
|
||||||
|
{
|
||||||
|
_localizer = localizer;
|
||||||
|
_dbContext = context;
|
||||||
|
siteSettings = settingsOptions.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IActionResult> Index(string id)
|
||||||
|
{
|
||||||
|
ViewBag.IsFromSecureProx = Request.Headers.ContainsKey(Constants.SshHeaderKey) && Request.Headers[Constants.SshHeaderKey] == "on";
|
||||||
|
ViewBag.SecureHomeUrl = "https://" + Request.Headers["X-Forwarded-Host"];
|
||||||
|
ViewBag.SshHeaderKey = Request.Headers[Constants.SshHeaderKey];
|
||||||
|
var uid = User.GetUserId();
|
||||||
|
long[] clicked = null;
|
||||||
|
if (uid == null)
|
||||||
|
{
|
||||||
|
await HttpContext.Session.LoadAsync();
|
||||||
|
var strclicked = HttpContext.Session.GetString("clicked");
|
||||||
|
if (strclicked != null) clicked = strclicked.Split(':').Select(c => long.Parse(c)).ToArray();
|
||||||
|
if (clicked == null) clicked = new long[0];
|
||||||
|
}
|
||||||
|
else clicked = _dbContext.DimissClicked.Where(d => d.UserId == uid).Select(d => d.NotificationId).ToArray();
|
||||||
|
var notes = _dbContext.Notification.Where(
|
||||||
|
n => !clicked.Contains(n.Id)
|
||||||
|
);
|
||||||
|
if (notes.Any()) this.Notify(notes);
|
||||||
|
|
||||||
|
ViewData["HaircutCommandCount"] = _dbContext.HairCutQueries.Where(
|
||||||
|
q => q.ClientId == uid && q.Status < QueryStatus.Failed
|
||||||
|
).Count();
|
||||||
|
var toShow = _dbContext.Activities
|
||||||
|
.Include(a => a.Forms)
|
||||||
|
.Include(a => a.Parent)
|
||||||
|
.Include(a => a.Children)
|
||||||
|
.Where(a => !a.Hidden)
|
||||||
|
.Where(a => a.ParentCode == id)
|
||||||
|
.OrderByDescending(a => a.Rate).ToList();
|
||||||
|
|
||||||
|
foreach (var a in toShow)
|
||||||
|
{
|
||||||
|
a.Children = a.Children.Where(c => !c.Hidden).ToList();
|
||||||
|
}
|
||||||
|
return View(toShow);
|
||||||
|
}
|
||||||
|
public async Task<IActionResult> About()
|
||||||
|
{
|
||||||
|
FileInfo fi = new FileInfo("wwwroot/version");
|
||||||
|
return View("About", fi.Exists ? _localizer["Version logicielle: "] + await fi.OpenText().ReadToEndAsync() : _localizer["Aucune information sur la version logicielle n'est publiée."]);
|
||||||
|
}
|
||||||
|
public IActionResult Privacy()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
public IActionResult AboutMarkdown()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Contact()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
public IActionResult Dash()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
public ActionResult Chat()
|
||||||
|
{
|
||||||
|
if (User.Identity.IsAuthenticated)
|
||||||
|
{
|
||||||
|
ViewBag.IsAuthenticated = true;
|
||||||
|
string uid = User.GetUserId();
|
||||||
|
ViewBag.Contacts = _dbContext.Contact.Where(c => c.OwnerId == uid)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else ViewBag.IsAuthenticated = false;
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Error()
|
||||||
|
{
|
||||||
|
var feature = this.HttpContext.Features.Get<IExceptionHandlerFeature>();
|
||||||
|
|
||||||
|
return View("~/Views/Shared/Error.cshtml", feature?.Error);
|
||||||
|
}
|
||||||
|
public IActionResult Status(int id)
|
||||||
|
{
|
||||||
|
ViewBag.StatusCode = id;
|
||||||
|
return View("~/Views/Shared/Status.cshtml");
|
||||||
|
}
|
||||||
|
public IActionResult Todo()
|
||||||
|
{
|
||||||
|
User.GetUserId();
|
||||||
|
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult VideoChat()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Audio()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
|
||||||
public IActionResult Error()
|
|
||||||
{
|
|
||||||
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
31
src/Yavsc/Controllers/HomeController.cs.new
Normal file
31
src/Yavsc/Controllers/HomeController.cs.new
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Yavsc.Models;
|
||||||
|
|
||||||
|
namespace Yavsc.Controllers;
|
||||||
|
|
||||||
|
public class HomeController : Controller
|
||||||
|
{
|
||||||
|
private readonly ILogger<HomeController> _logger;
|
||||||
|
|
||||||
|
public HomeController(ILogger<HomeController> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Index()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Privacy()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||||
|
public IActionResult Error()
|
||||||
|
{
|
||||||
|
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
||||||
|
}
|
||||||
|
}
|
@ -16,7 +16,8 @@ namespace Yavsc.Helpers
|
|||||||
var notifs = SetupNotificationList(controller);
|
var notifs = SetupNotificationList(controller);
|
||||||
notifs.Add(new Notification { title = title, body = body });
|
notifs.Add(new Notification { title = title, body = body });
|
||||||
}
|
}
|
||||||
public static void Notify(this Controller controller, IEnumerable<Notification> notes)
|
|
||||||
|
public static void Notify(this Controller controller, IEnumerable<Notification> notes)
|
||||||
{
|
{
|
||||||
var notifs = SetupNotificationList(controller);
|
var notifs = SetupNotificationList(controller);
|
||||||
notifs.AddRange(notes);
|
notifs.AddRange(notes);
|
||||||
|
@ -99,7 +99,7 @@ namespace Yavsc.Migrations
|
|||||||
column: x => x.PaymentId,
|
column: x => x.PaymentId,
|
||||||
principalTable: "PayPalPayment",
|
principalTable: "PayPalPayment",
|
||||||
principalColumn: "CreationToken",
|
principalColumn: "CreationToken",
|
||||||
onDelete: ReferentialAction.Restrict);
|
onDelete: ReferentialAction.Cascade);
|
||||||
table.ForeignKey(
|
table.ForeignKey(
|
||||||
name: "FK_Project_PerformerProfile_PerformerId",
|
name: "FK_Project_PerformerProfile_PerformerId",
|
||||||
column: x => x.PerformerId,
|
column: x => x.PerformerId,
|
||||||
|
3554
src/Yavsc/Migrations/20230326173049_net7.Designer.cs
generated
Normal file
3554
src/Yavsc/Migrations/20230326173049_net7.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
7089
src/Yavsc/Migrations/20230326173049_net7.cs
Normal file
7089
src/Yavsc/Migrations/20230326173049_net7.cs
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -75,6 +75,8 @@ namespace Yavsc.Models
|
|||||||
if (et.ClrType.GetInterface("IBaseTrackedEntity") != null)
|
if (et.ClrType.GetInterface("IBaseTrackedEntity") != null)
|
||||||
et.FindProperty("DateCreated").SetAfterSaveBehavior(Microsoft.EntityFrameworkCore.Metadata.PropertySaveBehavior.Ignore);
|
et.FindProperty("DateCreated").SetAfterSaveBehavior(Microsoft.EntityFrameworkCore.Metadata.PropertySaveBehavior.Ignore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder.Entity<Activity>().Property(a=>a.ParentCode).IsRequired(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is not a failback procedure.
|
// this is not a failback procedure.
|
||||||
|
@ -3,7 +3,7 @@ using Microsoft.AspNetCore;
|
|||||||
|
|
||||||
namespace Yavsc
|
namespace Yavsc
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
@ -8,20 +8,18 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.AspNetCore.Mvc.Razor;
|
using Microsoft.AspNetCore.Mvc.Razor;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System.Net;
|
|
||||||
using Google.Apis.Util.Store;
|
using Google.Apis.Util.Store;
|
||||||
using Microsoft.AspNetCore.Identity;
|
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Yavsc.Helpers;
|
using Yavsc.Helpers;
|
||||||
using static System.Environment;
|
using Microsoft.AspNetCore.Mvc.Authorization;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Yavsc.Models;
|
||||||
|
using Yavsc.Services;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
namespace Yavsc
|
namespace Yavsc
|
||||||
{
|
{
|
||||||
using Microsoft.AspNetCore.Mvc.Authorization;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Models;
|
|
||||||
using Services;
|
|
||||||
|
|
||||||
public partial class Startup
|
public partial class Startup
|
||||||
{
|
{
|
||||||
@ -50,15 +48,16 @@ namespace Yavsc
|
|||||||
HostingFullName = $"{env.EnvironmentName} [{prodtag}/{devtag}/{stagetag}]";
|
HostingFullName = $"{env.EnvironmentName} [{prodtag}/{devtag}/{stagetag}]";
|
||||||
// Set up configuration sources.
|
// Set up configuration sources.
|
||||||
var builder = new ConfigurationBuilder()
|
var builder = new ConfigurationBuilder()
|
||||||
|
.AddEnvironmentVariables()
|
||||||
.AddJsonFile("appsettings.json")
|
.AddJsonFile("appsettings.json")
|
||||||
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
|
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
|
||||||
|
|
||||||
|
|
||||||
builder.AddEnvironmentVariables();
|
builder.AddEnvironmentVariables();
|
||||||
Configuration = builder.Build();
|
Configuration = builder.Build();
|
||||||
|
|
||||||
var auth = Configuration["Site:Authority"];
|
var auth = Configuration["Site:Authority"];
|
||||||
var cxstr = Configuration["ConnectionStrings:Default"];
|
var cxstr = Configuration["ConnectionStrings:Default"];
|
||||||
|
|
||||||
ConnectionString = cxstr;
|
ConnectionString = cxstr;
|
||||||
|
|
||||||
AppDomain.CurrentDomain.SetData(Constants.YavscConnectionStringEnvName, ConnectionString);
|
AppDomain.CurrentDomain.SetData(Constants.YavscConnectionStringEnvName, ConnectionString);
|
||||||
@ -185,6 +184,15 @@ namespace Yavsc
|
|||||||
options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser());
|
options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
services.AddAuthentication("Bearer").AddJwtBearer("Bearer", options =>
|
||||||
|
{
|
||||||
|
options.Authority = siteSettings.GetValue<string>("ExternalUrl");
|
||||||
|
options.TokenValidationParameters = new TokenValidationParameters
|
||||||
|
{
|
||||||
|
ValidateAudience = false
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/* FIXME services.AddSingleton<IAuthorizationHandler, HasBadgeHandler>();
|
/* FIXME services.AddSingleton<IAuthorizationHandler, HasBadgeHandler>();
|
||||||
services.AddSingleton<IAuthorizationHandler, HasTemporaryPassHandler>();
|
services.AddSingleton<IAuthorizationHandler, HasTemporaryPassHandler>();
|
||||||
services.AddSingleton<IAuthorizationHandler, BlogEditHandler>();
|
services.AddSingleton<IAuthorizationHandler, BlogEditHandler>();
|
||||||
@ -201,13 +209,14 @@ namespace Yavsc
|
|||||||
|
|
||||||
services.AddMvc(config =>
|
services.AddMvc(config =>
|
||||||
{
|
{
|
||||||
var policy = new AuthorizationPolicyBuilder()
|
/* var policy = new AuthorizationPolicyBuilder()
|
||||||
.RequireAuthenticatedUser()
|
.RequireAuthenticatedUser()
|
||||||
.Build();
|
.Build();
|
||||||
config.Filters.Add(new AuthorizeFilter(policy));
|
config.Filters.Add(new AuthorizeFilter(policy)); */
|
||||||
config.Filters.Add(new ProducesAttribute("application/json"));
|
config.Filters.Add(new ProducesAttribute("application/json"));
|
||||||
// config.ModelBinders.Insert(0,new MyDateTimeModelBinder());
|
// config.ModelBinders.Insert(0,new MyDateTimeModelBinder());
|
||||||
// config.ModelBinders.Insert(0,new MyDecimalModelBinder());
|
// config.ModelBinders.Insert(0,new MyDecimalModelBinder());
|
||||||
|
config.EnableEndpointRouting = false;
|
||||||
}).AddFormatterMappings(
|
}).AddFormatterMappings(
|
||||||
config => config.SetMediaTypeMappingForFormat("text/pdf",
|
config => config.SetMediaTypeMappingForFormat("text/pdf",
|
||||||
new MediaTypeHeaderValue("text/pdf"))
|
new MediaTypeHeaderValue("text/pdf"))
|
||||||
@ -298,7 +307,7 @@ namespace Yavsc
|
|||||||
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
|
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
|
||||||
.CreateScope())
|
.CreateScope())
|
||||||
{
|
{
|
||||||
serviceScope.ServiceProvider.GetService<ApplicationDbContext>()
|
serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>()
|
||||||
.Database.Migrate();
|
.Database.Migrate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,14 +337,13 @@ namespace Yavsc
|
|||||||
ConfigureWebSocketsApp(app);
|
ConfigureWebSocketsApp(app);
|
||||||
|
|
||||||
|
|
||||||
_logger.LogInformation("LocalApplicationData: " + Environment.GetFolderPath(SpecialFolder.LocalApplicationData, SpecialFolderOption.DoNotVerify));
|
_logger.LogInformation("LocalApplicationData: " + Environment.GetFolderPath(
|
||||||
|
Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.DoNotVerify));
|
||||||
|
|
||||||
CheckApp(env, loggerFactory);
|
CheckApp(env, loggerFactory);
|
||||||
app.UseEndpoints(endpoints =>
|
|
||||||
{
|
app.UseStatusCodePages().UseStaticFiles().UseAuthentication();
|
||||||
endpoints.MapHub<ChatHub>("/chat");
|
app.UseMvcWithDefaultRoute();
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
159
src/Yavsc/Views/Home.new/About.cshtml
Executable file
159
src/Yavsc/Views/Home.new/About.cshtml
Executable file
@ -0,0 +1,159 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "About ";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
<environment names="Development">
|
||||||
|
**Version de Development**
|
||||||
|
<markdown>
|
||||||
|
|
||||||
|
## L'objectif
|
||||||
|
|
||||||
|
Cette application est construite pour mettre en relation des artistes
|
||||||
|
du domaine musical avec leur public.
|
||||||
|
|
||||||
|
## Le fonctionnement
|
||||||
|
|
||||||
|
Les utilisateurs du site sont soit artiste, soit client, soit administrateur. ils ont tous droit à leur blog.
|
||||||
|
Pour les artistes, c'est un moyen de promouvoir leur activité.
|
||||||
|
Ils peuvent y publier des articles, truffés de vidéos et photos.
|
||||||
|
Pour les clients, c'est un moyen de casser la glace avec leurs idoles,
|
||||||
|
par la description détaillées de leur centres d'intérêts.
|
||||||
|
|
||||||
|
L'application propulse aussi une messagerie instantanée, disponible depuis
|
||||||
|
un navigateur Web ou depuis l'appplication mobile,
|
||||||
|
pouvant garantir la preservation du secret sur toute information personnelle,
|
||||||
|
du client comme du prestataire.
|
||||||
|
|
||||||
|
Puis viennent (ou pas) une prise commande, un payement du client,
|
||||||
|
la prestation, une collecte du retour du client, et un paiement du prestataire de services.
|
||||||
|
|
||||||
|
Ni le client ni le prestataire ne sont anonymes pour l'applications,
|
||||||
|
il sont même formellement authentifies par l'acquitement d'une première
|
||||||
|
facturation en ligne, ou à l'occasion de la saisie de leur profil proféssionnel.
|
||||||
|
|
||||||
|
Durant la phase de construction d'un contrat de prestation,
|
||||||
|
le client et l'artiste peuvent profiter d'un canal de communication privé et anonyme,
|
||||||
|
qui est fermé à la validation définitive du dit contrat.
|
||||||
|
|
||||||
|
Valider un contrat, c'est:
|
||||||
|
|
||||||
|
* Choisir le type de contrat
|
||||||
|
* Se mettre d'accord sur les paramètres du contrat
|
||||||
|
* Le faire signer des deux parties
|
||||||
|
* Mettre en œuvre d'éventuels paiement d'arrhes
|
||||||
|
|
||||||
|
Une fois validé, le contrat est publié à destination des deux parties. la facture est publiée à destination du client,
|
||||||
|
qui peut l'honorer auprès du système, auquel cas ce client est marqué solvable, et le contrat est marqué approvisionné.
|
||||||
|
|
||||||
|
En cas de défaut d'approvisionnement, le système prendra soin de marquer le contrat comme provisoire, et de prévenir l'artiste
|
||||||
|
d'effectuer toute prestation en relation tant le paiement associé laisse à douter.
|
||||||
|
|
||||||
|
Une fois sa prestation associée exécutée, les paiements relatifs sont effectués auprès de l'artiste.
|
||||||
|
|
||||||
|
Pour un contrat exécuté et non honoré par le client, le processus de poursuite en recouvrement est engagé, sinon, le contrat est archivé,
|
||||||
|
des attestations de paiement sont disponibles pour l'artiste et la facture est marquée payée, puis repostée au client.
|
||||||
|
|
||||||
|
### Pour l'artiste
|
||||||
|
|
||||||
|
L'artiste choisit plusieurs paramètres qui vont faire son profil :
|
||||||
|
|
||||||
|
* Le type d'activités qu'il veut promouvoir, le type de prestations qu'il fournit (est-ce un DJ,
|
||||||
|
un chanteur solo, un musicien solo, un ensemble musical classique, un groupe)
|
||||||
|
* La tarification de sa mise en contact avec un nouveau client
|
||||||
|
(combien je reçois par demande client traitée sans lourdeur de plus d'une journée)
|
||||||
|
* Le lieu où il exerce et, le cas échéant, sur combien de distance il pourrait se déplacer.
|
||||||
|
* un agenda Google optionnel, à consulter pour établir sa disponibilité
|
||||||
|
* Des paramètres supplémentaires en fonctions de son type d'activité par exemple, pour
|
||||||
|
les ensembles, leur taille, le cas échéant, leur répertoire ou des indications sur le style de leur musique)
|
||||||
|
|
||||||
|
### Pour le client
|
||||||
|
|
||||||
|
Il choisit un lieu et une date pour déclarer un événement avenir
|
||||||
|
(il peut bien-sûr en programmer autant qu'il le veut).
|
||||||
|
|
||||||
|
Il peut, parcourir les publications des artistes, et entamer,
|
||||||
|
sur la base d'un de ses projets événementiel, la négociation d'un contrat de prestation.
|
||||||
|
|
||||||
|
Il a accès à la connaissance des journées connues comme libres des artistes par le système.
|
||||||
|
|
||||||
|
## La confidentialité
|
||||||
|
|
||||||
|
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone
|
||||||
|
ne sont transmis ni aux clients, ni aux artistes. Seul le système a accès à ces informations.
|
||||||
|
|
||||||
|
De plus, le droit de retrait est permanent et sa mise en oeuvre immédiate.
|
||||||
|
Les artistes comme les clients peuvent demander leur désinscription,
|
||||||
|
qui désactive immédiatement les publications associées à leurs informations,
|
||||||
|
et programme la suppression complète de ces dites informations dans les quinze jours
|
||||||
|
à compter de la demande, sauf demande contradictoire.
|
||||||
|
L'opération est annulable, jusqu'à deux semaines après sa programmation.
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Lua,Development">
|
||||||
|
<markdown>
|
||||||
|
C'est mon site pérso, une configuration de _Yavsc_ (encore une autre très petite entreprise).
|
||||||
|
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [license: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Yavsc,Development">
|
||||||
|
<markdown>
|
||||||
|
Yet Another Very Small Company ...
|
||||||
|
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="YavscPre,Development">
|
||||||
|
<markdown>
|
||||||
|
## Yet Another Very Small Company :
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
En production:
|
||||||
|
|
||||||
|
* [Lua](http://pschneider.fr:85)
|
||||||
|
* [Yavsc](http://pschneider.fr:84)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
|
||||||
|
<environment names="coiffure,Development">
|
||||||
|
<markdown>
|
||||||
|
Vous êtes sur le site de commande en coiffure à domicile de Soraya Boudjouraf,
|
||||||
|
un as de la coiffure, qui oeuvre en région parisienne.
|
||||||
|
|
||||||
|
En validant un formulaire de commande ici, c'est à elle que vous notifiez votre demande.
|
||||||
|
|
||||||
|
Vous pouvez 
|
||||||
|
et/ou des détails sur votre demande,
|
||||||
|
elle vous rappelera.</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Development">
|
||||||
|
<markdown>
|
||||||
|
## Ceci est un site de développement.
|
||||||
|
|
||||||
|
Cette présente ressource ne concerne que le développement du logiciel qui la met en oeuvre.
|
||||||
|
Elle est éphémère, et pratiquement en permanence force de codes 500.
|
||||||
|
|
||||||
|
Veuillez excuser l'équipe de développement pour vous avoir fait part de cette adresse et pour la gêne occasionnnée.
|
||||||
|
|
||||||
|
La "pré-production" affiche les sites suivants:
|
||||||
|
|
||||||
|
* [Lua](https://pschneider.fr:85)
|
||||||
|
* [Yavsc](https://pschneider.fr:84)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
<p>
|
||||||
|
@Model
|
||||||
|
</p>
|
163
src/Yavsc/Views/Home.new/About.pt.cshtml
Executable file
163
src/Yavsc/Views/Home.new/About.pt.cshtml
Executable file
@ -0,0 +1,163 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "About";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
<environment names="freefield,Development">
|
||||||
|
|
||||||
|
<markdown>
|
||||||
|
## O objetivo
|
||||||
|
|
||||||
|
Esta aplicação é construída para conectar artistas
|
||||||
|
do campo musical com seu público.
|
||||||
|
|
||||||
|
## Operation
|
||||||
|
|
||||||
|
Os usuários do site são artista, cliente ou administrador. Todos eles têm direito ao seu blog.
|
||||||
|
Para artistas, é uma maneira de promover seus negócios.
|
||||||
|
Eles podem publicar artigos, cheios de vídeos e fotos.
|
||||||
|
Para os clientes, é uma maneira de quebrar o gelo com seus ídolos,
|
||||||
|
pela descrição detalhada de seus centros de interesse.
|
||||||
|
|
||||||
|
O aplicativo também alimenta um mensageiro instantâneo, disponível desde
|
||||||
|
um navegador da web ou de um aplicativo para dispositivos móveis
|
||||||
|
pode garantir a preservação do sigilo sobre qualquer informação pessoal,
|
||||||
|
cliente e provedor.
|
||||||
|
|
||||||
|
Então venha (ou não) um pedido, um pagamento do cliente,
|
||||||
|
a entrega, uma coleta do retorno do cliente e um pagamento do provedor de serviços.
|
||||||
|
|
||||||
|
Nem o cliente nem o provedor são anônimos para os aplicativos,
|
||||||
|
eles são até formalmente autenticados pela aquisição de um primeiro
|
||||||
|
faturamento on-line ou ao entrar em seu perfil profissional.
|
||||||
|
|
||||||
|
Durante a fase de construção de um contrato de serviço,
|
||||||
|
o cliente e o artista podem se beneficiar de um canal de comunicação privado e anônimo,
|
||||||
|
que está fechado para a validação final do referido contrato.
|
||||||
|
|
||||||
|
Valide um contrato é:
|
||||||
|
|
||||||
|
* Escolha o tipo de contrato
|
||||||
|
* Concordo com os parâmetros do contrato
|
||||||
|
* Faça ambas as partes assinarem
|
||||||
|
* Implementar qualquer adiantamento
|
||||||
|
|
||||||
|
Uma vez validado, o contrato é publicado para ambas as partes. a fatura é publicada para o cliente,
|
||||||
|
quem pode homenageá-lo ao sistema, caso em que esse cliente recebe uma pontuação de solvente e o contrato é marcado como provisionado.
|
||||||
|
|
||||||
|
Em caso de falta de fornecimento, o sistema terá o cuidado de marcar o contrato como provisório, e avisar o artista
|
||||||
|
para executar qualquer serviço relacionado, pois o pagamento associado deixa dúvidas.
|
||||||
|
|
||||||
|
Depois que o serviço associado tiver sido executado, os pagamentos relativos serão feitos ao artista.
|
||||||
|
|
||||||
|
Para um contrato executado e não honrado pelo cliente, o processo de processo de recuperação é contratado, caso contrário, o contrato é arquivado,
|
||||||
|
Os certificados de pagamento estão disponíveis para o artista e a fatura é marcada como paga e depois repassada ao cliente.
|
||||||
|
|
||||||
|
### Para o artista
|
||||||
|
|
||||||
|
O artista escolhe vários parâmetros que farão o seu perfil:
|
||||||
|
|
||||||
|
* O tipo de atividades que ele quer promover, o tipo de serviços que ele oferece (é um DJ,
|
||||||
|
um cantor solo, um músico solo, um conjunto musical clássico, uma banda)
|
||||||
|
* O preço de seu contato com um novo cliente
|
||||||
|
(quanto recebo por solicitação de cliente processada sem peso de mais de um dia)
|
||||||
|
* O lugar onde ele pratica e, se sim, até onde ele pode se mover.
|
||||||
|
* um calendário opcional do Google, para consultar para estabelecer sua disponibilidade
|
||||||
|
* Parâmetros adicionais dependendo do tipo de atividade, por exemplo, para
|
||||||
|
conjuntos, seu tamanho, se houver, seu repertório ou indicações do estilo de sua música)
|
||||||
|
|
||||||
|
### Para o cliente
|
||||||
|
|
||||||
|
Ele escolhe um lugar e uma data para declarar um evento futuro
|
||||||
|
(Ele pode programar o quanto quiser).
|
||||||
|
|
||||||
|
Ele pode, navegar pelas publicações dos artistas e começar,
|
||||||
|
com base em um de seus projetos de eventos, a negociação de um contrato de serviço.
|
||||||
|
|
||||||
|
Ele tem acesso ao conhecimento de dias conhecidos como artistas livres pelo sistema.
|
||||||
|
|
||||||
|
## Confidencialidade
|
||||||
|
|
||||||
|
Em nenhum momento, nenhum endereço de correspondência, nenhum endereço de e-mail e nenhum número de telefone
|
||||||
|
não são transmitidos para clientes ou artistas. Apenas o sistema tem acesso a essas informações.
|
||||||
|
|
||||||
|
Além disso, o direito de retirada é permanente e sua implementação imediata.
|
||||||
|
Artistas e clientes podem solicitar sua desinscrição,
|
||||||
|
que imediatamente desativa as publicações associadas às suas informações,
|
||||||
|
e planeia a eliminação completa desta informação no prazo de quinze dias
|
||||||
|
do aplicativo, a menos que seja um pedido contraditório.
|
||||||
|
A operação é anulável até duas semanas após a sua programação.
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Lua,Development">
|
||||||
|
<markdown>Este é o meu site perso, uma configuração de _Yavsc_ (outro negócio muito pequeno).
|
||||||
|
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [licença: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
Outras instalações:
|
||||||
|
</markdown>
|
||||||
|
<markdown>
|
||||||
|
* [Coiffure](http://coiffure.pschneider.fr)
|
||||||
|
* [ZicMoove](http://linkmuse.pschneider.fr)
|
||||||
|
* [Yavsc](http://yavsc.pschneider.fr)
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Yavsc">
|
||||||
|
<markdown>
|
||||||
|
Yet Another Very Small Company ...
|
||||||
|
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="YavscPre">
|
||||||
|
<markdown>
|
||||||
|
## Yet Another Very Small Company :
|
||||||
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
|
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
En production:
|
||||||
|
|
||||||
|
* [Lua](http://pschneider.fr:85)
|
||||||
|
* [Yavsc](http://pschneider.fr:84)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
|
||||||
|
<environment names="coiffure">
|
||||||
|
<markdown>
|
||||||
|
Você está no site da ordem em cabeleireiro em casa de Soraya Boudjouraf,
|
||||||
|
um ás de cabeleireiro, que trabalha na região de Paris.
|
||||||
|
|
||||||
|
Ao validar um formulário de pedido aqui, é para ela que você notifica sua solicitação.
|
||||||
|
|
||||||
|
Você pode [Deixe-lhe o seu número de telefone] (/ HairCutCommand / HairCut? ActivityCode = Brush & performerId = 1bd841ab-c305-4971-940d-7ddca818310c)
|
||||||
|
e / ou detalhes sobre o seu pedido,
|
||||||
|
ela vai ligar de volta.</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<environment names="Development">
|
||||||
|
<markdown>
|
||||||
|
## Este é um site de desenvolvimento.
|
||||||
|
|
||||||
|
Este recurso só diz respeito ao desenvolvimento do software que o implementa.
|
||||||
|
É efêmero e praticamente constantemente força 500 códigos.
|
||||||
|
|
||||||
|
Por favor, desculpe a equipe de desenvolvimento para informá-lo sobre este endereço e pelo inconveniente.
|
||||||
|
|
||||||
|
A "pré-produção" exibe os seguintes sites:
|
||||||
|
|
||||||
|
* [Yavsc](https://yavsc.pschneider.fr)
|
||||||
|
* [Lua](https://lua.pschneider.fr)
|
||||||
|
|
||||||
|
</markdown>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
@Model
|
||||||
|
</p>
|
38
src/Yavsc/Views/Home.new/AboutAccess.cshtml
Normal file
38
src/Yavsc/Views/Home.new/AboutAccess.cshtml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "À propos des restrictions d'accès";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
|
<markdown>
|
||||||
|
|
||||||
|
# Blog et fichiers utilisateurs
|
||||||
|
|
||||||
|
Par défaut, un envoi à destination du serveur est privé, visible seulement pour son possesseur (et l'administration).
|
||||||
|
|
||||||
|
L'utilisateur peu publier chacun de ces derniers à l'adresse :
|
||||||
|
|
||||||
|
* de tout le monde,
|
||||||
|
* ou d'une liste de cercles d'utilisateurs,
|
||||||
|
* ou de personne
|
||||||
|
|
||||||
|
Quand il s'agit d'un fichier, son adresse permanente relative à la racine du serveur web est: `/UserFiles/(Nom Utilisateur)/(cheminVersLeFichier)`
|
||||||
|
|
||||||
|
Les restrictions d'accès à ce fichier sont celles associées à tous les fichiers du même dossier.
|
||||||
|
Il n'y a pas de regle assiciée à chaque fichier individuellement,
|
||||||
|
elles appartiennent au dossier qui les contient.
|
||||||
|
|
||||||
|
Les billet de blog sont regroupés par utilisateur, à l'Url
|
||||||
|
|
||||||
|
/Blog/(Nom d'Utilisateur)
|
||||||
|
|
||||||
|
Ils sont aussi regroupés par titre :
|
||||||
|
|
||||||
|
/Title/(Titre de post)
|
||||||
|
|
||||||
|
Et ils possèdent une addresse permanente de la forme :
|
||||||
|
|
||||||
|
/Blogspot/Details/(Id Numerique De Post)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</markdown>
|
19
src/Yavsc/Views/Home.new/AboutMarkdown.cshtml
Normal file
19
src/Yavsc/Views/Home.new/AboutMarkdown.cshtml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "À propos de Markdown";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
|
<markdown>
|
||||||
|
Quelques extensions à un Markdown de base :
|
||||||
|
|
||||||
|
* les video et audio: ``
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
à faire:
|
||||||
|
|
||||||
|
* le tag "Numéro de ticket": "Ticket#6854"
|
||||||
|
* le tag "Titre d'article": "#1_great_title"
|
||||||
|
* le tag "User" = "@@(John Doe)" ou "@@jdoe"
|
||||||
|
|
||||||
|
</markdown>
|
9
src/Yavsc/Views/Home.new/Audio.cshtml
Normal file
9
src/Yavsc/Views/Home.new/Audio.cshtml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Page d'accueil";
|
||||||
|
}
|
||||||
|
@section scripts {
|
||||||
|
|
||||||
|
<script src="~/js/str.js">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
}
|
10
src/Yavsc/Views/Home.new/Basket.cshtml
Normal file
10
src/Yavsc/Views/Home.new/Basket.cshtml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
@Model BasketView
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a asp-controller="HaircutCommand" asp-action="Index">
|
||||||
|
@Model.HairCutActiveQueryCount </a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
13
src/Yavsc/Views/Home.new/CGV.cshtml
Normal file
13
src/Yavsc/Views/Home.new/CGV.cshtml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Conditions Générales de Vente";
|
||||||
|
}
|
||||||
|
<h2>@ViewData["Title"]</h2>
|
||||||
|
<markdown>
|
||||||
|
|
||||||
|
Le paiement intervient à la commande, quelque soit la date d'intervention.
|
||||||
|
Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/HairCutCommand/),
|
||||||
|
|
||||||
|
Vous pouvez demander le remboursement d'un paiement, dans le cadre d'une réclamation sur l'execution
|
||||||
|
de votre commande, en nous contactant via courrier éléctronique ou postal, [que vour retrouverez sur la page de contact](/Home/Contact), votre demande sera rapidement traitée.
|
||||||
|
|
||||||
|
</markdown>
|
22
src/Yavsc/Views/Home.new/Chat.cshtml
Normal file
22
src/Yavsc/Views/Home.new/Chat.cshtml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
@{ ViewBag.Title = "Chat"; }
|
||||||
|
<h2>@ViewBag.Title</h2>
|
||||||
|
|
||||||
|
<label><input type="checkbox" id="mute" />Muet</label>
|
||||||
|
|
||||||
|
<div class="container disabled panel" id="chatview" data="fullchatview"
|
||||||
|
data-chans="yavsc" data-mutectl="mute" ></div>
|
||||||
|
|
||||||
|
@section scripts {
|
||||||
|
<!--Reference the autogenerated SignalR hub script. -->
|
||||||
|
<script src="~/api/signalr/hubs"></script>
|
||||||
|
<!-- SignalR script to update the chat page and send messages.-->
|
||||||
|
|
||||||
|
@if (!ViewBag.IsAuthenticated) { // Get the user name and store it to prepend to messages.
|
||||||
|
<script>
|
||||||
|
// var uname = prompt('Entrez votre nom:', '');
|
||||||
|
|
||||||
|
</script>
|
||||||
|
}
|
||||||
|
<script src="~/js/chat.js"></script>
|
||||||
|
|
||||||
|
}
|
17
src/Yavsc/Views/Home.new/Contact.cshtml
Executable file
17
src/Yavsc/Views/Home.new/Contact.cshtml
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Contact";
|
||||||
|
}
|
||||||
|
<h2>@ViewData["Title"].</h2>
|
||||||
|
<h3>@ViewData["Message"]</h3>
|
||||||
|
|
||||||
|
<address>
|
||||||
|
Paul Schneider<br>
|
||||||
|
2 Boulevard Aristide Briand -
|
||||||
|
92150 Suresnes (France)
|
||||||
|
<abbr title="Phone">P:</abbr> +33 6 51 14 15 64
|
||||||
|
</address>
|
||||||
|
|
||||||
|
<address>
|
||||||
|
<strong>Support:</strong> <a href="mailto:contact@pschneider.fr">contact@pschneider.fr</a><br />
|
||||||
|
<strong>Marketing:</strong> <a href="mailto:paul@pschneider.fr">paul@pschneider.fr</a>
|
||||||
|
</address>
|
19
src/Yavsc/Views/Home.new/Dash.cshtml
Normal file
19
src/Yavsc/Views/Home.new/Dash.cshtml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Dash";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<video id="videoPlayer" controls></video>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@section scripts {
|
||||||
|
<script src="~/js/dash.all.min.js"></script>
|
||||||
|
<script>
|
||||||
|
(function(){
|
||||||
|
var url = "https://dash.akamaized.net/envivio/EnvivioDash3/manifest.mpd";
|
||||||
|
var player = dashjs.MediaPlayer().create();
|
||||||
|
player.initialize(document.querySelector("#videoPlayer"), url, true);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
}
|
||||||
|
|
8
src/Yavsc/Views/Home.new/Index.cshtml
Normal file
8
src/Yavsc/Views/Home.new/Index.cshtml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Home Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h1 class="display-4">Welcome</h1>
|
||||||
|
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
|
||||||
|
</div>
|
6
src/Yavsc/Views/Home.new/Privacy.cshtml
Normal file
6
src/Yavsc/Views/Home.new/Privacy.cshtml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Privacy Policy";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
|
<p>Use this page to detail your site's privacy policy.</p>
|
17
src/Yavsc/Views/Home.new/Todo.cshtml
Executable file
17
src/Yavsc/Views/Home.new/Todo.cshtml
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Todo (first)";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
<em>Linkmuse(trox)</em>
|
||||||
|
|
||||||
|
<markdown>
|
||||||
|
Les tags.
|
||||||
|
La librairie, les lives.
|
||||||
|
</markdown>
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "TODO";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
<em>Faster, stronger, shorter</em>
|
||||||
|
<markdown>
|
||||||
|
</markdown>
|
76
src/Yavsc/Views/Home.new/VideoChat.cshtml
Normal file
76
src/Yavsc/Views/Home.new/VideoChat.cshtml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
@{ ViewBag.Title = "video Chat"; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input type="file" accept="video/*;capture=camcorder" id="cam">
|
||||||
|
<!-- <input type="file" accept="image/*;capture=camera" >
|
||||||
|
<input type="file" accept="audio/*;capture=microphone"> -->
|
||||||
|
<video autoplay id="localvideo">
|
||||||
|
</video>
|
||||||
|
@section scripts
|
||||||
|
{
|
||||||
|
<script>
|
||||||
|
|
||||||
|
function readURL(input) {
|
||||||
|
if (input.files && input.files[0]) {
|
||||||
|
var reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = function (e) {
|
||||||
|
$('#localvideo').attr('src', e.target.result);
|
||||||
|
}
|
||||||
|
|
||||||
|
reader.readAsDataURL(input.files[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#cam").change(function(){
|
||||||
|
readURL(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
var errorCallback = function(e) {
|
||||||
|
console.log('Reeeejected!', e);
|
||||||
|
};
|
||||||
|
|
||||||
|
navigator.getUserMedia = navigator.getUserMedia ||
|
||||||
|
navigator.webkitGetUserMedia ||
|
||||||
|
navigator.mediaDevices.getUserMedia ||
|
||||||
|
navigator.mozGetUserMedia ||
|
||||||
|
navigator.msGetUserMedia;
|
||||||
|
|
||||||
|
// Not showing vendor prefixes.
|
||||||
|
navigator.mediaDevices.getUserMedia({video: true, audio: true},
|
||||||
|
function(localMediaStream) {
|
||||||
|
var video = document.querySelector('video');
|
||||||
|
video.src = window.URL.createObjectURL(localMediaStream);
|
||||||
|
|
||||||
|
// Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia.
|
||||||
|
// See crbug.com/110938.
|
||||||
|
video.onloadedmetadata = function(e) {
|
||||||
|
// Ready to go. Do some stuff.
|
||||||
|
};
|
||||||
|
}, errorCallback);
|
||||||
|
|
||||||
|
|
||||||
|
if (navigator.mediaDevices.getUserMedia) {
|
||||||
|
navigator.mediaDevices.getUserMedia({audio: true, video: false}, function(stream) {
|
||||||
|
if ("srcObject" in video) {
|
||||||
|
video.srcObject = "stream";
|
||||||
|
} else {
|
||||||
|
// Avoid using this in new browsers, as it is going away.
|
||||||
|
video.src = window.URL.createObjectURL(stream);
|
||||||
|
}
|
||||||
|
}, errorCallback);
|
||||||
|
} else {
|
||||||
|
video.src = $("#cam").attr('src'); // fallback.
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(
|
||||||
|
function () {
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "About ";
|
ViewData["Title"] = @SR["About"]+" "+@SiteSettings.Value.Title;
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
<environment names="Development">
|
<environment names="Development">
|
||||||
@ -98,6 +98,10 @@ C'est mon site pérso, une configuration de _Yavsc_ (encore une autre très peti
|
|||||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||||
* [license: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
* [license: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||||
|
|
||||||
|
Autres installations:
|
||||||
|
</markdown>
|
||||||
|
<markdown>
|
||||||
|
* [Yavsc](http://yavsc.pschneider.fr)
|
||||||
</markdown>
|
</markdown>
|
||||||
</environment>
|
</environment>
|
||||||
|
|
||||||
@ -119,8 +123,8 @@ C'est mon site pérso, une configuration de _Yavsc_ (encore une autre très peti
|
|||||||
|
|
||||||
En production:
|
En production:
|
||||||
|
|
||||||
* [Lua](http://pschneider.fr:85)
|
* [Lua](https://lua.pschneider.fr)
|
||||||
* [Yavsc](http://pschneider.fr:84)
|
* [Yavsc](https://yavsc.pschneider.fr)
|
||||||
|
|
||||||
</markdown>
|
</markdown>
|
||||||
</environment>
|
</environment>
|
||||||
@ -140,7 +144,7 @@ elle vous rappelera.</markdown>
|
|||||||
|
|
||||||
<environment names="Development">
|
<environment names="Development">
|
||||||
<markdown>
|
<markdown>
|
||||||
## Ceci est un site de développement.
|
## Ceci est un site de développement.
|
||||||
|
|
||||||
Cette présente ressource ne concerne que le développement du logiciel qui la met en oeuvre.
|
Cette présente ressource ne concerne que le développement du logiciel qui la met en oeuvre.
|
||||||
Elle est éphémère, et pratiquement en permanence force de codes 500.
|
Elle est éphémère, et pratiquement en permanence force de codes 500.
|
||||||
@ -149,8 +153,8 @@ Veuillez excuser l'équipe de développement pour vous avoir fait part de cette
|
|||||||
|
|
||||||
La "pré-production" affiche les sites suivants:
|
La "pré-production" affiche les sites suivants:
|
||||||
|
|
||||||
* [Lua](https://pschneider.fr:85)
|
* [Yavsc](https://yavsc.pschneider.fr)
|
||||||
* [Yavsc](https://pschneider.fr:84)
|
* [Lua](https://lua.pschneider.fr)
|
||||||
|
|
||||||
</markdown>
|
</markdown>
|
||||||
</environment>
|
</environment>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "About";
|
ViewData["Title"] = @SR["About"]+" "+@SiteSettings.Value.Title;
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
<environment names="freefield,Development">
|
<environment names="freefield,Development">
|
||||||
@ -122,8 +122,8 @@ Outras instalações:
|
|||||||
|
|
||||||
En production:
|
En production:
|
||||||
|
|
||||||
* [Lua](http://pschneider.fr:85)
|
* [Lua](https://lua.pschneider.fr)
|
||||||
* [Yavsc](http://pschneider.fr:84)
|
* [Yavsc](https://yavsc.pschneider.fr)
|
||||||
|
|
||||||
</markdown>
|
</markdown>
|
||||||
</environment>
|
</environment>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "À propos des restrictions d'accès";
|
ViewData["Title"] = @SR["À propos des restrictions d'accès"];
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
@ -35,4 +35,4 @@ Et ils possèdent une addresse permanente de la forme :
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
</markdown>
|
</markdown>
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "À propos de Markdown";
|
ViewData["Title"] = @SR["À propos de Markdown"];
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Page d'accueil";
|
ViewData["Title"] = @SR["Page d'accueil"];
|
||||||
}
|
}
|
||||||
@section scripts {
|
@section scripts {
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Dash";
|
ViewData["Title"] = @SR["Dash"];
|
||||||
}
|
}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
107
src/Yavsc/Views/Home/Index.cshtml
Normal file → Executable file
107
src/Yavsc/Views/Home/Index.cshtml
Normal file → Executable file
@ -1,8 +1,103 @@
|
|||||||
@{
|
@model IEnumerable<Activity>
|
||||||
ViewData["Title"] = "Home Page";
|
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = @SR["Page d'accueil"];
|
||||||
|
int i=0;
|
||||||
|
bool multipleact = Model.Count()>1;
|
||||||
|
}
|
||||||
|
@section scripts {
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
var car = $('.carousel').first();
|
||||||
|
var fi = car.children('.carousel-inner').first()
|
||||||
|
.children('.item').first();
|
||||||
|
var capt = fi.children('.carousel-caption-s');
|
||||||
|
|
||||||
|
fi.addClass('active');
|
||||||
|
car.animate({'background-color':'rgba(0, 0, 0, .5)'},500,function() {
|
||||||
|
car.animate({'background-color':'rgba(0, 0, 0, 0)'},500)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
}
|
||||||
|
@section subbanner {
|
||||||
|
|
||||||
|
<div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="6000">
|
||||||
|
@if (multipleact) {
|
||||||
|
|
||||||
|
<ol class="carousel-indicators">
|
||||||
|
@{
|
||||||
|
|
||||||
|
foreach (var act in Model) {
|
||||||
|
if (i==0) {
|
||||||
|
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
|
||||||
|
} else {
|
||||||
|
<li data-target="#myCarousel" data-slide-to="@i"></li>
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</ol> }
|
||||||
|
<div class="carousel-inner" role="listbox">
|
||||||
|
@{
|
||||||
|
string cls = "item";
|
||||||
|
i=0;
|
||||||
|
foreach (var act in Model) {
|
||||||
|
<div class="@cls" style="background-image: url('@act.Photo'); background-repeat: no-repeat; ">
|
||||||
|
|
||||||
|
<div class="carousel-caption-s" >
|
||||||
|
<p><em>@act.Name</em><br/>
|
||||||
|
@act.Description </p>
|
||||||
|
|
||||||
|
@if (act.Children.Count>0) {
|
||||||
|
<a asp-route-id="@act.Code" class="btn btn-default">
|
||||||
|
@foreach (Activity c in act.Children) {
|
||||||
|
@Html.DisplayFor(subact=>c)
|
||||||
|
}
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
|
||||||
|
@foreach (var frm in act.Forms) {
|
||||||
|
<a class="btn btn-primary" asp-controller="FrontOffice" asp-action="@frm.ActionName" asp-route-id="@act.Code">
|
||||||
|
@frm.Title
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
i++;
|
||||||
|
cls = "item";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
@if (multipleact) {
|
||||||
|
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
|
||||||
|
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||||||
|
<span class="sr-only">Précédent</span>
|
||||||
|
</a>
|
||||||
|
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
|
||||||
|
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||||
|
<span class="sr-only">Suivant</span>
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="text-center">
|
@section ctxmenu {
|
||||||
<h1 class="display-4">Welcome</h1>
|
@if (ViewData["Announces"]!=null) {
|
||||||
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
|
<li><a asp-controller="Announces" class="badge" >
|
||||||
</div>
|
<img src="@SiteSettings.Value.Logo" alt="announces" title="Annonces @SiteSettings.Value.Title" /></a></li>
|
||||||
|
}
|
||||||
|
@if ((int)ViewData["HaircutCommandCount"]>0) {
|
||||||
|
<li><a asp-controller="HairCutCommand" class="badge" >
|
||||||
|
<img src="~/images/shoppingcart.svg" alt="basket" title="Vos bons de commande" />(@ViewData["HaircutCommandCount"])</a></li>
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@section header {
|
||||||
|
<style>
|
||||||
|
.navbar {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
}
|
@ -1,6 +1,14 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Privacy Policy";
|
ViewData["Title"] = @SR["Confidentialité"]+" "+@SiteSettings.Value.Title;
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
<p>Use this page to detail your site's privacy policy.</p>
|
<markdown>
|
||||||
|
## La confidentialité
|
||||||
|
|
||||||
|
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone
|
||||||
|
ne sont transmis à personne. Seul le système et son [possesseur](/Home/Contact) a accès à ces informations.
|
||||||
|
|
||||||
|
De plus, le droit de retrait est permanent et sa mise en oeuvre [immédiate](/Account/Delete).
|
||||||
|
|
||||||
|
</markdown>
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Todo (first)";
|
ViewData["Title"] = @SR["Todo (first)"];
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
<em>Linkmuse(trox)</em>
|
<em>Linkmuse(trox)</em>
|
||||||
@ -9,7 +9,7 @@ Les tags.
|
|||||||
La librairie, les lives.
|
La librairie, les lives.
|
||||||
</markdown>
|
</markdown>
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "TODO";
|
ViewData["Title"] = @SR["TODO"];
|
||||||
}
|
}
|
||||||
<h1>@ViewData["Title"]</h1>
|
<h1>@ViewData["Title"]</h1>
|
||||||
<em>Faster, stronger, shorter</em>
|
<em>Faster, stronger, shorter</em>
|
||||||
|
@ -54,7 +54,7 @@ $("#cam").change(function(){
|
|||||||
if (navigator.mediaDevices.getUserMedia) {
|
if (navigator.mediaDevices.getUserMedia) {
|
||||||
navigator.mediaDevices.getUserMedia({audio: true, video: false}, function(stream) {
|
navigator.mediaDevices.getUserMedia({audio: true, video: false}, function(stream) {
|
||||||
if ("srcObject" in video) {
|
if ("srcObject" in video) {
|
||||||
video.srcObject = "stream";
|
video.srcObject = stream;
|
||||||
} else {
|
} else {
|
||||||
// Avoid using this in new browsers, as it is going away.
|
// Avoid using this in new browsers, as it is going away.
|
||||||
video.src = window.URL.createObjectURL(stream);
|
video.src = window.URL.createObjectURL(stream);
|
||||||
@ -73,4 +73,4 @@ $("#cam").change(function(){
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
}
|
}
|
@ -31,3 +31,5 @@
|
|||||||
|
|
||||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
@inject IAuthorizationService AuthorizationService
|
@inject IAuthorizationService AuthorizationService
|
||||||
|
@inject Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer<Yavsc.Startup> SR
|
||||||
|
@inject Microsoft.Extensions.Options.IOptions<SiteSettings> SiteSettings
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0-preview.1" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4" />
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />
|
||||||
<PackageReference Include="Google.Apis.Compute.v1" Version="1.60.0.2987" />
|
<PackageReference Include="Google.Apis.Compute.v1" Version="1.60.0.2987" />
|
||||||
<PackageReference Include="MarkdownDeep-av.NET" Version="1.5.27" />
|
<PackageReference Include="MarkdownDeep-av.NET" Version="1.5.27" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
|
||||||
@ -17,6 +18,7 @@
|
|||||||
<PackageReference Include="pazof.rules" Version="1.1.3" />
|
<PackageReference Include="pazof.rules" Version="1.1.3" />
|
||||||
<PackageReference Include="RazorEngine.NetCore" Version="3.1.0" />
|
<PackageReference Include="RazorEngine.NetCore" Version="3.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.4" />
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
"Site": {
|
|
||||||
"Authority": "dev.pschneider.fr",
|
|
||||||
"Title": "Yavsc dev",
|
|
||||||
"Slogan": "Yavsc : WIP.",
|
|
||||||
"Banner": "/images/it/neworleans-louisiana-bywater-1973969-o.jpg",
|
|
||||||
"HomeViewName": "Home",
|
|
||||||
"FavIcon": "/favicon-dev.ico",
|
|
||||||
"Logo": "/images/logo-dev.png",
|
|
||||||
"StyleSheet":"/css/dev.css",
|
|
||||||
"Owner": {
|
|
||||||
"Name": "Paul",
|
|
||||||
"EMail": "paul@pschneider.fr",
|
|
||||||
"PostalAddress": {
|
|
||||||
"Street1": "2 Blv A. Briand",
|
|
||||||
"Street2": "Apt 284 - Bat V",
|
|
||||||
"PostalCode": "92150",
|
|
||||||
"City": "Suresnes",
|
|
||||||
"State": "France",
|
|
||||||
"Province": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Admin": {
|
|
||||||
"Name": "Paul",
|
|
||||||
"EMail": "contact@pschneider.fr"
|
|
||||||
},
|
|
||||||
"Avatars": "Avatars-Dev",
|
|
||||||
"Quota": 200000000,
|
|
||||||
"Bills": "Bills-Dev",
|
|
||||||
"Blog": "Blog-Dev",
|
|
||||||
"TempDir": "Temp-Dev",
|
|
||||||
"GitRepository": "/home/paul/workspace/tmp/test"
|
|
||||||
},
|
|
||||||
"Smtp": {
|
|
||||||
"Host": "localhost",
|
|
||||||
"Port": 25,
|
|
||||||
"Domain": "pschneider.fr",
|
|
||||||
"EnableSSL": false
|
|
||||||
},
|
|
||||||
"Logging": {
|
|
||||||
"IncludeScopes": true,
|
|
||||||
"LogLevel": {
|
|
||||||
"Default": "Debug",
|
|
||||||
"System": "Warning",
|
|
||||||
"Microsoft": "Warning"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ConnectionStrings": {
|
|
||||||
"Default": "Server=localhost;Port=5432;Database=YavscDev;Username=yavscdev;Password=admin;"
|
|
||||||
},
|
|
||||||
"Authentication": {
|
|
||||||
"Google": {
|
|
||||||
"ApiKey": "AIzaSyD_f77q1ZG5GaGwx6Ifa7apmLuz4zbMZAw",
|
|
||||||
"BrowserApiKey": "AIzaSyCC_Dwpf2bTNybhpUsii-elIHyRnapduSY",
|
|
||||||
"GoogleServiceAccountJson": "google-secret.json",
|
|
||||||
"GoogleWebClientJson": "yavsc-client-secret.json"
|
|
||||||
} ,
|
|
||||||
"Facebook": {
|
|
||||||
"AppId": "552433071604577",
|
|
||||||
"AppToken": "552433071604577|Ahk_Jkn3i-0jixWV2wEiNQDqIFs"
|
|
||||||
},
|
|
||||||
"PayPal": {
|
|
||||||
"Mode": "sandbox",
|
|
||||||
"ClientId": "Ae9FgyE-R885ZSSiwtR_XlhaicGDqK5OEU912XOEQ5_LasTUtUtjT5zxAsb3tCl7croFnPtCAvYPeUAn",
|
|
||||||
"ClientSecret": "EEYfxQNQp0rNdfTcCxmujtmvUEXASJ5FOK8F5acBB9_57hE67WwPheU0V4whE7Qgp1dd3p2IJYDExYXj",
|
|
||||||
"Accounts": [{
|
|
||||||
"ApiUsername": "paul_api1.pschneider.fr",
|
|
||||||
"ApiPassword": "XE5TQ3VC5KB9B8AU",
|
|
||||||
"Signature": "AFcWxV21C7fd0v3bYYYRCpSSRl31AnnEkKSPDeEm60yAsJkxHLEYDMUy"
|
|
||||||
}],
|
|
||||||
"ApplicationId": "APP-80W284485P519543T",
|
|
||||||
"MerchantAccountId": "JL6JTE8C8SKLQ",
|
|
||||||
"MerchantAccountUserName": "paul_api1.pschneider.fr"
|
|
||||||
},
|
|
||||||
"Societeinfo": {
|
|
||||||
"ApiKey": "1b631h12vctbu25cqk2snlgbubebak6fd2f39t82jp7614a1asl"
|
|
||||||
},
|
|
||||||
"GitHub": {
|
|
||||||
"ApiKey": "f248b78b21ee57f54a6cce7e7014f8ebf0620577"
|
|
||||||
},
|
|
||||||
"Twitter": {
|
|
||||||
"ClientId": "fJAhbkzk9WZdTpCyjGHw1wBbx",
|
|
||||||
"ClientSecret": "2tP84RWq6VkY4iwgQE9Rb75Nc5lmdX6XU2ppNMxF4h7ErBCbyg"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,5 +5,70 @@
|
|||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*",
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"Default": "Server=[YOURSERVERNAME];Port=5432;Database=[YOURDBNAME];Username=[YOURDBUSERNAME];Password=[YOURDBPASSW];"
|
||||||
|
},
|
||||||
|
"Site": {
|
||||||
|
"Title": "Yavsc",
|
||||||
|
"Slogan": "Yavsc!",
|
||||||
|
"StyleSheet": "/css/default.css",
|
||||||
|
"Authority": "http://127.0.0.1:5000/",
|
||||||
|
"Owner": {
|
||||||
|
"Name": "[Site owner's name]",
|
||||||
|
"EMail": "[Site owner's e-mail address]"
|
||||||
|
},
|
||||||
|
"Admin": {
|
||||||
|
"Name": "[a name for a site admin]",
|
||||||
|
"EMail": "[an e-mail for a site admin]"
|
||||||
|
},
|
||||||
|
"Avatars": "Avatars",
|
||||||
|
"Quota": 200000000,
|
||||||
|
"Bills": "Bills",
|
||||||
|
"Blog": "Blog",
|
||||||
|
"TempDir": "Temp"
|
||||||
|
},
|
||||||
|
"Smtp": {
|
||||||
|
"Host": "[YOURSMTPHOST]",
|
||||||
|
"Port": 25,
|
||||||
|
"EnableSSL": false
|
||||||
|
},
|
||||||
|
"DataProtection": {
|
||||||
|
"Keys": {
|
||||||
|
"Dir": "DataProtection-Keys"
|
||||||
|
},
|
||||||
|
"RSAParamFile": "RSA-Params.json",
|
||||||
|
"ExpiresInHours": 168
|
||||||
|
},
|
||||||
|
"Authentication": {
|
||||||
|
"PayPal": {
|
||||||
|
"Mode": "[sandbox|production]",
|
||||||
|
"ClientId": "[Your PayPal REST API ClientId]",
|
||||||
|
"Secret": "[Your PayPal REST API Secret]"
|
||||||
|
},
|
||||||
|
"Google": {
|
||||||
|
"ApiKey": "[Your ApiKey]",
|
||||||
|
"ClientId": "[Your ClientId]",
|
||||||
|
"ClientSecret": "[Your ClientSecret]",
|
||||||
|
"ServiceAccount": {
|
||||||
|
"project_id": "[Yours]",
|
||||||
|
"private_key_id": "[Yours]",
|
||||||
|
"private_key": "-----[Yours]---\n",
|
||||||
|
"client_email": "[Yours]@appspot.gserviceaccount.com",
|
||||||
|
"client_id": "[Yours]",
|
||||||
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||||
|
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
||||||
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||||
|
"client_x509_cert_url": "https://www41.googleapis.com/robot/v1/[Yours].com"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Facebook": {
|
||||||
|
"ClientId": "[Your ClientId]",
|
||||||
|
"ClientSecret": "[Your ClientSecret]"
|
||||||
|
},
|
||||||
|
"Twitter": {
|
||||||
|
"ClientId": "[Your ClientId]",
|
||||||
|
"ClientSecret": "[Your ClientSecret]"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user