yavsc/web/Controllers/AdminController.cs

341 lines
9.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
11 years ago
using Yavsc.Model.RolesAndMembers;
11 years ago
using Yavsc.Model.Admin;
using Yavsc.Admin;
11 years ago
using System.IO;
using Yavsc.Model;
using Yavsc.Helpers;
11 years ago
namespace Yavsc.Controllers
{
/// <summary>
/// Admin controller.
/// Only Admin members should be allowed to use it.
/// </summary>
public class AdminController : Controller
{
/// <summary>
/// Index this instance.
/// </summary>
11 years ago
public ActionResult Index()
11 years ago
{
// FIXME do this in a new installation script.
if (!Roles.RoleExists (_adminRoleName)) {
Roles.CreateRole (_adminRoleName);
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
ViewData.Notify( _adminRoleName + " " + LocalizedText.role_created);
}
return View ();
11 years ago
}
/// <summary>
/// Inits the db.
/// In order this action succeds,
/// there must not exist any administrator,
/// nor Admin group.
/// </summary>
/// <returns>The db.</returns>
/// <param name="datac">Datac.</param>
/// <param name="doInit">Do init.</param>
public ActionResult InitDb(DataAccess datac, string doInit)
{
if (doInit=="on") {
if (ModelState.IsValid) {
datac.BackupPrefix = Server.MapPath (datac.BackupPrefix);
DataManager mgr = new DataManager (datac);
TaskOutput tcdb = mgr.CreateDb ();
ViewData ["DbName"] = datac.DbName;
ViewData ["DbUser"] = datac.DbUser;
ViewData ["Host"] = datac.Host;
ViewData ["Port"] = datac.Port;
return View ("Created", tcdb);
}
}
return View ();
}
/// <summary>
/// Backups the specified model.
/// </summary>
/// <param name="model">Model.</param>
11 years ago
[Authorize(Roles="Admin")]
public ActionResult Backups(DataAccess model)
{
return View (model);
}
/// <summary>
/// Creates the backup.
/// </summary>
/// <returns>The backup.</returns>
/// <param name="datac">Datac.</param>
11 years ago
[Authorize(Roles="Admin")]
public ActionResult CreateBackup(DataAccess datac)
{
if (datac != null) {
if (ModelState.IsValid) {
if (string.IsNullOrEmpty (datac.Password))
ModelState.AddModelError ("Password", "Invalid passord");
11 years ago
datac.BackupPrefix = Server.MapPath (datac.BackupPrefix);
11 years ago
DataManager ex = new DataManager (datac);
Export e = ex.CreateBackup ();
if (e.ExitCode > 0)
ModelState.AddModelError ("Password", "Operation Failed");
return View ("BackupCreated", e);
}
} else {
datac = new DataAccess ();
}
return View (datac);
}
/// <summary>
/// Creates the user backup.
/// </summary>
/// <returns>The user backup.</returns>
/// <param name="datac">Datac.</param>
/// <param name="username">Username.</param>
11 years ago
[Authorize(Roles="Admin")]
public ActionResult CreateUserBackup(DataAccess datac,string username)
{
throw new NotImplementedException();
}
/// <summary>
/// Upgrade the specified datac.
/// </summary>
/// <param name="datac">Datac.</param>
11 years ago
[Authorize(Roles="Admin")]
public ActionResult Upgrade(DataAccess datac) {
throw new NotImplementedException();
}
/// <summary>
/// Restore the specified datac, backupName and dataOnly.
/// </summary>
/// <param name="datac">Datac.</param>
/// <param name="backupName">Backup name.</param>
/// <param name="dataOnly">If set to <c>true</c> data only.</param>
11 years ago
[Authorize(Roles="Admin")]
public ActionResult Restore(DataAccess datac,string backupName,bool dataOnly=true)
{
ViewData ["BackupName"] = backupName;
if (ModelState.IsValid) {
11 years ago
// TODO BETTER
datac.BackupPrefix = Server.MapPath (datac.BackupPrefix);
11 years ago
DataManager mgr = new DataManager (datac);
ViewData ["BackupName"] = backupName;
ViewData ["DataOnly"] = dataOnly;
11 years ago
TaskOutput t = mgr.Restore (
Path.Combine(new FileInfo(datac.BackupPrefix).DirectoryName,
backupName),dataOnly);
11 years ago
return View ("Restored", t);
}
11 years ago
BuildBackupList (datac);
11 years ago
return View (datac);
}
Nouvelles fonctionalités: - Gestion des déploiement de configurations - Ajout et suppression d'utilisateurs au groupes (autres que celui des admins) - Page à customiser en cas d'accès à une ressource d'accès restreint, qui par défaut n'indique que le nom de controleur et celui de la methode concérnée, et qui ajoute, seulement dans le cas ou l'utilisateur est administrateur, les noms de groupes ou d'utilisateur autorisés, avec la mentions "admins only" invitant à la discretion. * Microsoft.Web.XmlTransform.dll: Copié de l'import Nuget de Mono.Web.Xdt (transformations de fichiers de configuration) * yavsc.admin.js: Implémente les méthodes Javascript de l'interface utilisateur de suppression et d'ajout d'un utilisateur à un groupe: un widget jQuery pour la suppression, l'accès à l'API * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * Makefile: retour au débuggage de la copie de travaille, et pas de la déployée. La copie de travail sera avec les mots de passe, et donc toujours différente de celle sous git, mais c'est pas grave. * AccountController.cs: Evite de mettre à jour un mot de passe avec des valeures non attendues * style.css: corrige un mouvement de la disposition au survol de la souris * AuthorizeAttribute.cs: enlève la redirection à l'accès restreint, et fixe pas la même la transmission des données `Roles` et `Users` de la vue * AdminController.cs: Evite de supprimer un utilisateur d'un groupe avec des valeures non attendues * HomeController.cs: Il n'y avait pas à créer de methode pour la vue publique de l'accès restreint. * YavscAjaxHelper.cs: évite d'avoir à convertir en chaine les valeurs de la vue. * App.master: Cette page maître affiche encore beaucoup de billets de blog, on y installe le coteur, de base. Ça changera quand les blogs auront (enfin) leur page maître dédiée. * AppAdmin.master: synchronisation avec la page maître principale (thémes) * NoLogin.master: synchronisation avec la page maître principale.(thémes) * yavsc.rate.js: supprime l'initialisation de tous les type de cotes depuis le script global. C'est fait sur les pages qui en ont besoin, et seulement pour les types de cotes concernés. * AddUserToRole.ascx: Ce formulaire est maintenant à la fois opérationel depuis une interface web sans javascript, et à la Ajax quand Javascript activé. * UsersInRole.aspx: implémente l'interface utilisateur pour l'ajout et la suppression d'un utilisateur à un groupe * Skills.aspx: initialise le coteur js des compétences site * UserSkills.aspx: initialise le coteur js de compétences utilisateur * Web.csproj: un script et des pages d'erreur d'accès, il en faut une par controlleur s'il veut restreindre ses accès sans rendre de code Http 403 ou 404. * UserNameBase.cs: Permet l'usage des espaces dans les noms d'utilisateurs, à la création legacy, ou autres usage du nom d'utilisateur.
10 years ago
11 years ago
private void BuildBackupList(DataAccess datac)
{
// build ViewData ["Backups"];
string bckd=Server.MapPath (datac.BackupPrefix);
DirectoryInfo di = new DirectoryInfo (new FileInfo(bckd).DirectoryName);
List<string> bks = new List<string> ();
foreach (FileInfo ti in di.GetFiles("*.tar"))
bks.Add (ti.Name);
ViewData ["Backups"] = bks.ToArray ();
}
/// <summary>
/// Removes from role.
/// </summary>
/// <returns>The from role.</returns>
/// <param name="username">Username.</param>
/// <param name="rolename">Rolename.</param>
/// <param name="returnUrl">Return URL.</param>
[Authorize(Roles="Admin")]
Nouvelles fonctionalités: - Gestion des déploiement de configurations - Ajout et suppression d'utilisateurs au groupes (autres que celui des admins) - Page à customiser en cas d'accès à une ressource d'accès restreint, qui par défaut n'indique que le nom de controleur et celui de la methode concérnée, et qui ajoute, seulement dans le cas ou l'utilisateur est administrateur, les noms de groupes ou d'utilisateur autorisés, avec la mentions "admins only" invitant à la discretion. * Microsoft.Web.XmlTransform.dll: Copié de l'import Nuget de Mono.Web.Xdt (transformations de fichiers de configuration) * yavsc.admin.js: Implémente les méthodes Javascript de l'interface utilisateur de suppression et d'ajout d'un utilisateur à un groupe: un widget jQuery pour la suppression, l'accès à l'API * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * Makefile: retour au débuggage de la copie de travaille, et pas de la déployée. La copie de travail sera avec les mots de passe, et donc toujours différente de celle sous git, mais c'est pas grave. * AccountController.cs: Evite de mettre à jour un mot de passe avec des valeures non attendues * style.css: corrige un mouvement de la disposition au survol de la souris * AuthorizeAttribute.cs: enlève la redirection à l'accès restreint, et fixe pas la même la transmission des données `Roles` et `Users` de la vue * AdminController.cs: Evite de supprimer un utilisateur d'un groupe avec des valeures non attendues * HomeController.cs: Il n'y avait pas à créer de methode pour la vue publique de l'accès restreint. * YavscAjaxHelper.cs: évite d'avoir à convertir en chaine les valeurs de la vue. * App.master: Cette page maître affiche encore beaucoup de billets de blog, on y installe le coteur, de base. Ça changera quand les blogs auront (enfin) leur page maître dédiée. * AppAdmin.master: synchronisation avec la page maître principale (thémes) * NoLogin.master: synchronisation avec la page maître principale.(thémes) * yavsc.rate.js: supprime l'initialisation de tous les type de cotes depuis le script global. C'est fait sur les pages qui en ont besoin, et seulement pour les types de cotes concernés. * AddUserToRole.ascx: Ce formulaire est maintenant à la fois opérationel depuis une interface web sans javascript, et à la Ajax quand Javascript activé. * UsersInRole.aspx: implémente l'interface utilisateur pour l'ajout et la suppression d'un utilisateur à un groupe * Skills.aspx: initialise le coteur js des compétences site * UserSkills.aspx: initialise le coteur js de compétences utilisateur * Web.csproj: un script et des pages d'erreur d'accès, il en faut une par controlleur s'il veut restreindre ses accès sans rendre de code Http 403 ou 404. * UserNameBase.cs: Permet l'usage des espaces dans les noms d'utilisateurs, à la création legacy, ou autres usage du nom d'utilisateur.
10 years ago
public ActionResult RemoveUserFromRole(string username, string rolename, string returnUrl)
{
Nouvelles fonctionalités: - Gestion des déploiement de configurations - Ajout et suppression d'utilisateurs au groupes (autres que celui des admins) - Page à customiser en cas d'accès à une ressource d'accès restreint, qui par défaut n'indique que le nom de controleur et celui de la methode concérnée, et qui ajoute, seulement dans le cas ou l'utilisateur est administrateur, les noms de groupes ou d'utilisateur autorisés, avec la mentions "admins only" invitant à la discretion. * Microsoft.Web.XmlTransform.dll: Copié de l'import Nuget de Mono.Web.Xdt (transformations de fichiers de configuration) * yavsc.admin.js: Implémente les méthodes Javascript de l'interface utilisateur de suppression et d'ajout d'un utilisateur à un groupe: un widget jQuery pour la suppression, l'accès à l'API * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * Makefile: retour au débuggage de la copie de travaille, et pas de la déployée. La copie de travail sera avec les mots de passe, et donc toujours différente de celle sous git, mais c'est pas grave. * AccountController.cs: Evite de mettre à jour un mot de passe avec des valeures non attendues * style.css: corrige un mouvement de la disposition au survol de la souris * AuthorizeAttribute.cs: enlève la redirection à l'accès restreint, et fixe pas la même la transmission des données `Roles` et `Users` de la vue * AdminController.cs: Evite de supprimer un utilisateur d'un groupe avec des valeures non attendues * HomeController.cs: Il n'y avait pas à créer de methode pour la vue publique de l'accès restreint. * YavscAjaxHelper.cs: évite d'avoir à convertir en chaine les valeurs de la vue. * App.master: Cette page maître affiche encore beaucoup de billets de blog, on y installe le coteur, de base. Ça changera quand les blogs auront (enfin) leur page maître dédiée. * AppAdmin.master: synchronisation avec la page maître principale (thémes) * NoLogin.master: synchronisation avec la page maître principale.(thémes) * yavsc.rate.js: supprime l'initialisation de tous les type de cotes depuis le script global. C'est fait sur les pages qui en ont besoin, et seulement pour les types de cotes concernés. * AddUserToRole.ascx: Ce formulaire est maintenant à la fois opérationel depuis une interface web sans javascript, et à la Ajax quand Javascript activé. * UsersInRole.aspx: implémente l'interface utilisateur pour l'ajout et la suppression d'un utilisateur à un groupe * Skills.aspx: initialise le coteur js des compétences site * UserSkills.aspx: initialise le coteur js de compétences utilisateur * Web.csproj: un script et des pages d'erreur d'accès, il en faut une par controlleur s'il veut restreindre ses accès sans rendre de code Http 403 ou 404. * UserNameBase.cs: Permet l'usage des espaces dans les noms d'utilisateurs, à la création legacy, ou autres usage du nom d'utilisateur.
10 years ago
if (ModelState.IsValid)
Roles.RemoveUserFromRole(username,rolename);
return Redirect(returnUrl);
}
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
/// <summary>
/// Adds the user to role.
/// </summary>
/// <returns>The user to role.</returns>
/// <param name="username">Username.</param>
/// <param name="rolename">Rolename.</param>
/// <param name="returnUrl">Return URL.</param>
[Authorize(Roles="Admin")]
public ActionResult AddUserToRole(string username, string rolename, string returnUrl)
{
Nouvelles fonctionalités: - Gestion des déploiement de configurations - Ajout et suppression d'utilisateurs au groupes (autres que celui des admins) - Page à customiser en cas d'accès à une ressource d'accès restreint, qui par défaut n'indique que le nom de controleur et celui de la methode concérnée, et qui ajoute, seulement dans le cas ou l'utilisateur est administrateur, les noms de groupes ou d'utilisateur autorisés, avec la mentions "admins only" invitant à la discretion. * Microsoft.Web.XmlTransform.dll: Copié de l'import Nuget de Mono.Web.Xdt (transformations de fichiers de configuration) * yavsc.admin.js: Implémente les méthodes Javascript de l'interface utilisateur de suppression et d'ajout d'un utilisateur à un groupe: un widget jQuery pour la suppression, l'accès à l'API * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: * RestrictedArea.aspx: Page vue par l'utilisateur si par malheur il suivait un lien vers un contenu d'accès restreint, à la place d'un code Http 404 ou autre. Si cet utilisateur est administrateur, la page lui affiche les rôles ou utilisateurs autorisés à accèder au contenu. * Makefile: retour au débuggage de la copie de travaille, et pas de la déployée. La copie de travail sera avec les mots de passe, et donc toujours différente de celle sous git, mais c'est pas grave. * AccountController.cs: Evite de mettre à jour un mot de passe avec des valeures non attendues * style.css: corrige un mouvement de la disposition au survol de la souris * AuthorizeAttribute.cs: enlève la redirection à l'accès restreint, et fixe pas la même la transmission des données `Roles` et `Users` de la vue * AdminController.cs: Evite de supprimer un utilisateur d'un groupe avec des valeures non attendues * HomeController.cs: Il n'y avait pas à créer de methode pour la vue publique de l'accès restreint. * YavscAjaxHelper.cs: évite d'avoir à convertir en chaine les valeurs de la vue. * App.master: Cette page maître affiche encore beaucoup de billets de blog, on y installe le coteur, de base. Ça changera quand les blogs auront (enfin) leur page maître dédiée. * AppAdmin.master: synchronisation avec la page maître principale (thémes) * NoLogin.master: synchronisation avec la page maître principale.(thémes) * yavsc.rate.js: supprime l'initialisation de tous les type de cotes depuis le script global. C'est fait sur les pages qui en ont besoin, et seulement pour les types de cotes concernés. * AddUserToRole.ascx: Ce formulaire est maintenant à la fois opérationel depuis une interface web sans javascript, et à la Ajax quand Javascript activé. * UsersInRole.aspx: implémente l'interface utilisateur pour l'ajout et la suppression d'un utilisateur à un groupe * Skills.aspx: initialise le coteur js des compétences site * UserSkills.aspx: initialise le coteur js de compétences utilisateur * Web.csproj: un script et des pages d'erreur d'accès, il en faut une par controlleur s'il veut restreindre ses accès sans rendre de code Http 403 ou 404. * UserNameBase.cs: Permet l'usage des espaces dans les noms d'utilisateurs, à la création legacy, ou autres usage du nom d'utilisateur.
10 years ago
if (ModelState.IsValid)
Roles.AddUsersToRole(new string[] { username } ,rolename);
return Redirect(returnUrl);
}
/// <summary>
/// Removes the user.
/// </summary>
/// <returns>The user.</returns>
/// <param name="username">Username.</param>
/// <param name="submitbutton">Submitbutton.</param>
[Authorize(Roles="Admin")]
public ActionResult RemoveUser (string username, string submitbutton)
{
ViewData ["usertoremove"] = username;
if (submitbutton == "Supprimer") {
Membership.DeleteUser (username);
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
ViewData.Notify( string.Format("utilisateur \"{0}\" supprimé",username));
ViewData ["usertoremove"] = null;
}
return View ();
}
/// <summary>
/// Removes the role.
/// </summary>
/// <returns>The role.</returns>
/// <param name="rolename">Rolename.</param>
/// <param name="submitbutton">Submitbutton.</param>
[Authorize(Roles="Admin")]
public ActionResult RemoveRole (string rolename, string submitbutton)
{
if (submitbutton == "Supprimer")
{
Roles.DeleteRole(rolename);
}
return RedirectToAction("RoleList");
}
/// <summary>
/// Removes the role query.
/// </summary>
/// <returns>The role query.</returns>
/// <param name="rolename">Rolename.</param>
[Authorize(Roles="Admin")]
public ActionResult RemoveRoleQuery(string rolename)
{
ViewData["roletoremove"] = rolename;
return View ();
}
/// <summary>
/// Removes the user query.
/// </summary>
/// <returns>The user query.</returns>
/// <param name="username">Username.</param>
[Authorize(Roles="Admin")]
public ActionResult RemoveUserQuery(string username)
{
ViewData["usertoremove"] = username;
return UserList();
}
//TODO no more than pageSize results per page
/// <summary>
/// User list.
/// </summary>
/// <returns>The list.</returns>
[Authorize()]
public ActionResult UserList ()
{
MembershipUserCollection c = Membership.GetAllUsers ();
return View (c);
}
[Authorize()]
public ActionResult UsersInRole (string rolename)
{
if (rolename == null)
rolename = "Admin";
ViewData ["RoleName"] = rolename;
ViewData ["Roles"] = Roles.GetAllRoles ();
ViewData ["UsersInRole"] = Roles.GetUsersInRole (rolename);
return View ();
}
[Authorize()]
public ActionResult UserRoles (string username)
{
ViewData ["AllRoles"] = Roles.GetAllRoles ();
if (username == null)
username = User.Identity.Name;
ViewData ["UserName"] = username;
ViewData ["UsersRoles"] = Roles.GetRolesForUser (username);
return View ();
}
/// <summary>
/// a form to add a role
/// </summary>
/// <returns>The role.</returns>
Fixes bill editon * AppAdmin.master: A new master page for Administration * Web.config: * Web.csproj: * Book.aspx: * Auth.aspx: * Auth.aspx: * Book.aspx: * Auth.aspx: * TagPanel.ascx: * YavscModel.csproj: * Restore.aspx: * Book.aspx: * Restored.aspx: * date.js: * RoleList.aspx: * UserList.aspx: * LocalizedText.resx: * number.js: * FreeDate.cs: * plural.js: * message.js: * BookQuery.cs: * LocalizedText.fr.resx: * ChooseADate.aspx: * currency.js: * ChooseADate.aspx: * ErrorMessage.aspx: * globalize.js: * ChooseADate.aspx: * ChooseCalendar.aspx: * LocalizedText.Designer.cs: * ChooseCalendar.aspx: * ErrorMessage.aspx: * relative-time.js: * ChooseCalendar.aspx: * LocalizedText.fr.Designer.cs: * OtherWebException.aspx: * globalize.cultures.js: * globalize.culture.he.js: * globalize.culture.ru.js: * globalize.culture.ha.js: * globalize.culture.rw.js: * globalize.culture.gu.js: * globalize.culture.sa.js: * globalize.culture.gl.js: * globalize.culture.hi.js: * globalize.culture.pt.js: * globalize.culture.id.js: * globalize.culture.hy.js: * globalize.culture.hu.js: * globalize.culture.rm.js: * globalize.culture.hr.js: * globalize.culture.ro.js: * globalize.culture.gd.js: * globalize.culture.fi.js: * globalize.culture.fa.js: * globalize.culture.eu.js: * globalize.culture.et.js: * globalize.culture.es.js: * globalize.culture.sq.js: * globalize.culture.sr.js: * globalize.culture.sl.js: * globalize.culture.ga.js: * globalize.culture.fy.js: * globalize.culture.fr.js: * globalize.culture.se.js: * globalize.culture.si.js: * globalize.culture.sk.js: * globalize.culture.fo.js: * globalize.culture.ig.js: * globalize.culture.ml.js: * globalize.culture.mt.js: * globalize.culture.nl.js: * globalize.culture.ms.js: * globalize.culture.ky.js: * globalize.culture.mn.js: * globalize.culture.nn.js: * globalize.culture.mk.js: * globalize.culture.ne.js: * globalize.culture.lt.js: * globalize.culture.lv.js: * globalize.culture.lo.js: * globalize.culture.mi.js: * globalize.culture.lb.js: * globalize.culture.nb.js: * globalize.culture.ko.js: * globalize.culture.iu.js: * globalize.culture.pa.js: * globalize.culture.pl.js: * globalize.culture.it.js: * globalize.culture.ps.js: * globalize.culture.is.js: * globalize.culture.ii.js: * globalize.culture.ja.js: * globalize.culture.no.js: * globalize.culture.kn.js: * globalize.culture.km.js: * globalize.culture.kl.js: * globalize.culture.oc.js: * globalize.culture.kk.js: * globalize.culture.ka.js: * globalize.culture.or.js: * globalize.culture.sv.js: * globalize.culture.xh.js: * globalize.culture.dv.js: * globalize.culture.yo.js: * globalize.culture.de.js: * globalize.culture.da.js: * globalize.culture.zh.js: * globalize.culture.cy.js: * globalize.culture.el.js: * globalize.culture.tt.js: * globalize.culture.ug.js: * globalize.culture.uk.js: * globalize.culture.ur.js: * globalize.culture.uz.js: * globalize.culture.vi.js: * globalize.culture.wo.js: * globalize.culture.cs.js: * globalize.culture.be.js: * globalize.culture.ba.js: * globalize.culture.az.js: * globalize.culture.as.js: * globalize.culture.ar.js: * globalize.culture.am.js: * globalize.culture.af.js: * globalize.culture.bg.js: * globalize.culture.zu.js: * globalize.culture.co.js: * globalize.culture.ca.js: * globalize.culture.bs.js: * globalize.culture.br.js: * globalize.culture.bo.js: * globalize.culture.bn.js: * globalize.culture.mr.js: * globalize.culture.tn.js: * globalize.culture.sw.js: * globalize.culture.tg.js: * globalize.culture.ta.js: * globalize.culture.tr.js: * globalize.culture.te.js: * globalize.culture.th.js: * globalize.culture.tk.js: * globalize.culture.dsb.js: * globalize.culture.prs.js: * globalize.culture.quz.js: * globalize.culture.kok.js: * globalize.culture.smn.js: * globalize.culture.qut.js: * globalize.culture.sms.js: * globalize.culture.sma.js: * globalize.culture.sah.js: * globalize.culture.gsw.js: * globalize.culture.moh.js: * globalize.culture.tzm.js: * globalize.culture.nso.js: * globalize.culture.arn.js: * globalize.culture.hsb.js: * globalize.culture.syr.js: * globalize.culture.fil.js: * globalize.culture.smj.js: * globalize.culture.oc-FR.js: * globalize.culture.th-TH.js: * globalize.culture.zu-ZA.js: * globalize.culture.nn-NO.js: * globalize.culture.sw-KE.js: * globalize.culture.mt-MT.js: * globalize.culture.sv-FI.js: * globalize.culture.ms-MY.js: * globalize.culture.sv-SE.js: * globalize.culture.ms-BN.js: * globalize.culture.nb-NO.js: * globalize.culture.te-IN.js: * globalize.culture.nl-NL.js: * globalize.culture.nl-BE.js: * globalize.culture.ta-IN.js: * globalize.culture.ne-NP.js: * globalize.culture.sq-AL.js: * globalize.culture.sl-SI.js: * globalize.culture.ro-RO.js: * globalize.culture.se-NO.js: * globalize.culture.vi-VN.js: * globalize.culture.rm-CH.js: * globalize.culture.wo-SN.js: * globalize.culture.se-SE.js: * globalize.culture.xh-ZA.js: * globalize.culture.tr-TR.js: * globalize.culture.sa-IN.js: * globalize.culture.ug-CN.js: * globalize.culture.rw-RW.js: * globalize.culture.uk-UA.js: * globalize.culture.se-FI.js: * globalize.culture.ru-RU.js: * globalize.culture.ur-PK.js: * globalize.culture.tn-ZA.js: * globalize.culture.zh-CN.js: * globalize.culture.pa-IN.js: * globalize.culture.tt-RU.js: * globalize.culture.zh-MO.js: * globalize.culture.zh-SG.js: * globalize.culture.or-IN.js: * globalize.culture.zh-TW.js: * globalize.culture.sk-SK.js: * globalize.culture.pt-PT.js: * globalize.culture.pt-BR.js: * globalize.culture.si-LK.js: * globalize.culture.yo-NG.js: * globalize.culture.ps-AF.js: * globalize.culture.tk-TM.js: * globalize.culture.pl-PL.js: * globalize.culture.zh-HK.js: * globalize.culture.en-NZ.js: * globalize.culture.en-PH.js: * globalize.culture.en-SG.js: * globalize.culture.en-TT.js: * globalize.culture.en-US.js: * globalize.culture.en-ZA.js: * globalize.culture.en-ZW.js: * globalize.culture.es-AR.js: * globalize.culture.en-MY.js: * globalize.culture.el-GR.js: * globalize.culture.en-AU.js: * globalize.culture.en-BZ.js: * globalize.culture.en-CA.js: * globalize.culture.en-GB.js: * globalize.culture.en-IE.js: * globalize.culture.en-IN.js: * globalize.culture.en-JM.js: * globalize.culture.es-BO.js: * globalize.culture.es-NI.js: * globalize.culture.es-PA.js: * globalize.culture.es-PE.js: * globalize.culture.es-PR.js: * globalize.culture.es-PY.js: * globalize.culture.es-SV.js: * globalize.culture.es-US.js: * globalize.culture.es-UY.js: * globalize.culture.es-MX.js: * globalize.culture.es-CL.js: * globalize.culture.es-CO.js: * globalize.culture.es-CR.js: * globalize.culture.es-DO.js: * globalize.culture.es-EC.js: * globalize.culture.es-ES.js: * globalize.culture.es-GT.js: * globalize.culture.es-HN.js: * globalize.culture.dv-MV.js: * globalize.culture.ar-LY.js: * globalize.culture.ar-MA.js: * globalize.culture.ar-OM.js: * globalize.culture.ar-QA.js: * globalize.culture.ar-SA.js: * globalize.culture.ar-SY.js: * globalize.culture.ar-TN.js: * globalize.culture.ar-YE.js: * globalize.culture.ar-LB.js: * globalize.culture.am-ET.js: * globalize.culture.ar-AE.js: * globalize.culture.ar-BH.js: * globalize.culture.ar-DZ.js: * globalize.culture.ar-EG.js: * globalize.culture.ar-IQ.js: * globalize.culture.ar-JO.js: * globalize.culture.ar-KW.js: * globalize.culture.as-IN.js: * globalize.culture.cs-CZ.js: * globalize.culture.cy-GB.js: * globalize.culture.da-DK.js: * globalize.culture.de-AT.js: * globalize.culture.de-CH.js: * globalize.culture.de-DE.js: * globalize.culture.de-LI.js: * globalize.culture.de-LU.js: * globalize.culture.co-FR.js: * globalize.culture.ba-RU.js: * globalize.culture.be-BY.js: * globalize.culture.bg-BG.js: * globalize.culture.bn-BD.js: * globalize.culture.bn-IN.js: * globalize.culture.bo-CN.js: * globalize.culture.br-FR.js: * globalize.culture.ca-ES.js: * globalize.culture.es-VE.js: * globalize.culture.hy-AM.js: * globalize.culture.id-ID.js: * globalize.culture.ig-NG.js: * globalize.culture.ii-CN.js: * globalize.culture.is-IS.js: * globalize.culture.it-CH.js: * globalize.culture.it-IT.js: * globalize.culture.hu-HU.js: * globalize.culture.gd-GB.js: * globalize.culture.gl-ES.js: * globalize.culture.gu-IN.js: * globalize.culture.he-IL.js: * globalize.culture.hi-IN.js: * globalize.culture.hr-BA.js: * globalize.culture.hr-HR.js: * globalize.culture.ja-JP.js: * globalize.culture.lt-LT.js: * globalize.culture.af-ZA.js: * globalize.culture.mi-NZ.js: * globalize.culture.mk-MK.js: * globalize.culture.ml-IN.js: * globalize.culture.mn-MN.js: * globalize.culture.mr-IN.js: * globalize.culture.lo-LA.js: * globalize.culture.ka-GE.js: * globalize.culture.kk-KZ.js: * globalize.culture.kl-GL.js: * globalize.culture.km-KH.js: * globalize.culture.kn-IN.js: * globalize.culture.ko-KR.js: * globalize.culture.ky-KG.js: * globalize.culture.lb-LU.js: * globalize.culture.ga-IE.js: * globalize.culture.fr-CH.js: * globalize.culture.fr-CA.js: * globalize.culture.fr-BE.js: * globalize.culture.fo-FO.js: * globalize.culture.lv-LV.js: * globalize.culture.fi-FI.js: * globalize.culture.fa-IR.js: * globalize.culture.eu-ES.js: * globalize.culture.et-EE.js: * globalize.culture.fr-FR.js: * globalize.culture.fy-NL.js: * globalize.culture.fr-LU.js: * globalize.culture.fr-MC.js: * globalize.culture.sma-SE.js: * globalize.culture.sma-NO.js: * globalize.culture.arn-CL.js: * globalize.culture.qut-GT.js: * globalize.culture.gsw-FR.js: * globalize.culture.fil-PH.js: * globalize.culture.smj-SE.js: * globalize.culture.smn-FI.js: * globalize.culture.sah-RU.js: * globalize.culture.sms-FI.js: * globalize.culture.prs-AF.js: * globalize.culture.syr-SY.js: * globalize.culture.smj-NO.js: * globalize.culture.zh-CHT.js: * globalize.culture.kok-IN.js: * globalize.culture.hsb-DE.js: * globalize.culture.moh-CA.js: * globalize.culture.nso-ZA.js: * globalize.culture.quz-PE.js: * globalize.culture.zh-CHS.js: * globalize.culture.dsb-DE.js: * globalize.culture.quz-BO.js: * globalize.culture.quz-EC.js: * globalize.culture.en-029.js: * globalize.culture.mn-Mong.js: * globalize.culture.mn-Cyrl.js: * globalize.culture.sr-Cyrl.js: * globalize.culture.az-Latn.js: * globalize.culture.az-Cyrl.js: * globalize.culture.sr-Latn.js: * globalize.culture.iu-Latn.js: * globalize.culture.zh-Hant.js: * globalize.culture.zh-Hans.js: * globalize.culture.tg-Cyrl.js: * globalize.culture.uz-Latn.js: * globalize.culture.uz-Cyrl.js: * globalize.culture.ha-Latn.js: * globalize.culture.iu-Cans.js: * globalize.culture.bs-Cyrl.js: * globalize.culture.bs-Latn.js: * globalize.culture.tzm-Latn.js: * globalize.culture.sr-Cyrl-ME.js: * globalize.culture.sr-Cyrl-CS.js: * globalize.culture.bs-Cyrl-BA.js: * globalize.culture.sr-Cyrl-RS.js: * globalize.culture.sr-Cyrl-BA.js: * globalize.culture.mn-Mong-CN.js: * globalize.culture.uz-Cyrl-UZ.js: * globalize.culture.ha-Latn-NG.js: * globalize.culture.iu-Latn-CA.js: * globalize.culture.uz-Latn-UZ.js: * globalize.culture.az-Latn-AZ.js: * globalize.culture.az-Cyrl-AZ.js: * globalize.culture.bs-Latn-BA.js: * globalize.culture.tg-Cyrl-TJ.js: * globalize.culture.iu-Cans-CA.js: * globalize.culture.sr-Latn-RS.js: * globalize.culture.sr-Latn-ME.js: * globalize.culture.sr-Latn-CS.js: * globalize.culture.sr-Latn-BA.js: * globalize.culture.tzm-Latn-DZ.js: * style.css: list in the nav are in line by default. * AdminController.cs: refactoring * App.master: Restores hallo editing by solving again jQuery-ui ref * Login.aspx: Prettier code at building Urls * Admin.aspx: * Index.aspx: * AddRole.aspx: * Backups.aspx: * RemoveUser.aspx: * RemoveRole..aspx: * CreateBackup.aspx: * BackupCreated.aspx: new master page
10 years ago
[Authorize(Roles="Admin"),HttpGet]
public ActionResult AddRole ()
{
return View ();
}
/// <summary>
/// Add a new role.
/// </summary>
/// <returns>The add role.</returns>
/// <param name="rolename">Rolename.</param>
Fixes bill editon * AppAdmin.master: A new master page for Administration * Web.config: * Web.csproj: * Book.aspx: * Auth.aspx: * Auth.aspx: * Book.aspx: * Auth.aspx: * TagPanel.ascx: * YavscModel.csproj: * Restore.aspx: * Book.aspx: * Restored.aspx: * date.js: * RoleList.aspx: * UserList.aspx: * LocalizedText.resx: * number.js: * FreeDate.cs: * plural.js: * message.js: * BookQuery.cs: * LocalizedText.fr.resx: * ChooseADate.aspx: * currency.js: * ChooseADate.aspx: * ErrorMessage.aspx: * globalize.js: * ChooseADate.aspx: * ChooseCalendar.aspx: * LocalizedText.Designer.cs: * ChooseCalendar.aspx: * ErrorMessage.aspx: * relative-time.js: * ChooseCalendar.aspx: * LocalizedText.fr.Designer.cs: * OtherWebException.aspx: * globalize.cultures.js: * globalize.culture.he.js: * globalize.culture.ru.js: * globalize.culture.ha.js: * globalize.culture.rw.js: * globalize.culture.gu.js: * globalize.culture.sa.js: * globalize.culture.gl.js: * globalize.culture.hi.js: * globalize.culture.pt.js: * globalize.culture.id.js: * globalize.culture.hy.js: * globalize.culture.hu.js: * globalize.culture.rm.js: * globalize.culture.hr.js: * globalize.culture.ro.js: * globalize.culture.gd.js: * globalize.culture.fi.js: * globalize.culture.fa.js: * globalize.culture.eu.js: * globalize.culture.et.js: * globalize.culture.es.js: * globalize.culture.sq.js: * globalize.culture.sr.js: * globalize.culture.sl.js: * globalize.culture.ga.js: * globalize.culture.fy.js: * globalize.culture.fr.js: * globalize.culture.se.js: * globalize.culture.si.js: * globalize.culture.sk.js: * globalize.culture.fo.js: * globalize.culture.ig.js: * globalize.culture.ml.js: * globalize.culture.mt.js: * globalize.culture.nl.js: * globalize.culture.ms.js: * globalize.culture.ky.js: * globalize.culture.mn.js: * globalize.culture.nn.js: * globalize.culture.mk.js: * globalize.culture.ne.js: * globalize.culture.lt.js: * globalize.culture.lv.js: * globalize.culture.lo.js: * globalize.culture.mi.js: * globalize.culture.lb.js: * globalize.culture.nb.js: * globalize.culture.ko.js: * globalize.culture.iu.js: * globalize.culture.pa.js: * globalize.culture.pl.js: * globalize.culture.it.js: * globalize.culture.ps.js: * globalize.culture.is.js: * globalize.culture.ii.js: * globalize.culture.ja.js: * globalize.culture.no.js: * globalize.culture.kn.js: * globalize.culture.km.js: * globalize.culture.kl.js: * globalize.culture.oc.js: * globalize.culture.kk.js: * globalize.culture.ka.js: * globalize.culture.or.js: * globalize.culture.sv.js: * globalize.culture.xh.js: * globalize.culture.dv.js: * globalize.culture.yo.js: * globalize.culture.de.js: * globalize.culture.da.js: * globalize.culture.zh.js: * globalize.culture.cy.js: * globalize.culture.el.js: * globalize.culture.tt.js: * globalize.culture.ug.js: * globalize.culture.uk.js: * globalize.culture.ur.js: * globalize.culture.uz.js: * globalize.culture.vi.js: * globalize.culture.wo.js: * globalize.culture.cs.js: * globalize.culture.be.js: * globalize.culture.ba.js: * globalize.culture.az.js: * globalize.culture.as.js: * globalize.culture.ar.js: * globalize.culture.am.js: * globalize.culture.af.js: * globalize.culture.bg.js: * globalize.culture.zu.js: * globalize.culture.co.js: * globalize.culture.ca.js: * globalize.culture.bs.js: * globalize.culture.br.js: * globalize.culture.bo.js: * globalize.culture.bn.js: * globalize.culture.mr.js: * globalize.culture.tn.js: * globalize.culture.sw.js: * globalize.culture.tg.js: * globalize.culture.ta.js: * globalize.culture.tr.js: * globalize.culture.te.js: * globalize.culture.th.js: * globalize.culture.tk.js: * globalize.culture.dsb.js: * globalize.culture.prs.js: * globalize.culture.quz.js: * globalize.culture.kok.js: * globalize.culture.smn.js: * globalize.culture.qut.js: * globalize.culture.sms.js: * globalize.culture.sma.js: * globalize.culture.sah.js: * globalize.culture.gsw.js: * globalize.culture.moh.js: * globalize.culture.tzm.js: * globalize.culture.nso.js: * globalize.culture.arn.js: * globalize.culture.hsb.js: * globalize.culture.syr.js: * globalize.culture.fil.js: * globalize.culture.smj.js: * globalize.culture.oc-FR.js: * globalize.culture.th-TH.js: * globalize.culture.zu-ZA.js: * globalize.culture.nn-NO.js: * globalize.culture.sw-KE.js: * globalize.culture.mt-MT.js: * globalize.culture.sv-FI.js: * globalize.culture.ms-MY.js: * globalize.culture.sv-SE.js: * globalize.culture.ms-BN.js: * globalize.culture.nb-NO.js: * globalize.culture.te-IN.js: * globalize.culture.nl-NL.js: * globalize.culture.nl-BE.js: * globalize.culture.ta-IN.js: * globalize.culture.ne-NP.js: * globalize.culture.sq-AL.js: * globalize.culture.sl-SI.js: * globalize.culture.ro-RO.js: * globalize.culture.se-NO.js: * globalize.culture.vi-VN.js: * globalize.culture.rm-CH.js: * globalize.culture.wo-SN.js: * globalize.culture.se-SE.js: * globalize.culture.xh-ZA.js: * globalize.culture.tr-TR.js: * globalize.culture.sa-IN.js: * globalize.culture.ug-CN.js: * globalize.culture.rw-RW.js: * globalize.culture.uk-UA.js: * globalize.culture.se-FI.js: * globalize.culture.ru-RU.js: * globalize.culture.ur-PK.js: * globalize.culture.tn-ZA.js: * globalize.culture.zh-CN.js: * globalize.culture.pa-IN.js: * globalize.culture.tt-RU.js: * globalize.culture.zh-MO.js: * globalize.culture.zh-SG.js: * globalize.culture.or-IN.js: * globalize.culture.zh-TW.js: * globalize.culture.sk-SK.js: * globalize.culture.pt-PT.js: * globalize.culture.pt-BR.js: * globalize.culture.si-LK.js: * globalize.culture.yo-NG.js: * globalize.culture.ps-AF.js: * globalize.culture.tk-TM.js: * globalize.culture.pl-PL.js: * globalize.culture.zh-HK.js: * globalize.culture.en-NZ.js: * globalize.culture.en-PH.js: * globalize.culture.en-SG.js: * globalize.culture.en-TT.js: * globalize.culture.en-US.js: * globalize.culture.en-ZA.js: * globalize.culture.en-ZW.js: * globalize.culture.es-AR.js: * globalize.culture.en-MY.js: * globalize.culture.el-GR.js: * globalize.culture.en-AU.js: * globalize.culture.en-BZ.js: * globalize.culture.en-CA.js: * globalize.culture.en-GB.js: * globalize.culture.en-IE.js: * globalize.culture.en-IN.js: * globalize.culture.en-JM.js: * globalize.culture.es-BO.js: * globalize.culture.es-NI.js: * globalize.culture.es-PA.js: * globalize.culture.es-PE.js: * globalize.culture.es-PR.js: * globalize.culture.es-PY.js: * globalize.culture.es-SV.js: * globalize.culture.es-US.js: * globalize.culture.es-UY.js: * globalize.culture.es-MX.js: * globalize.culture.es-CL.js: * globalize.culture.es-CO.js: * globalize.culture.es-CR.js: * globalize.culture.es-DO.js: * globalize.culture.es-EC.js: * globalize.culture.es-ES.js: * globalize.culture.es-GT.js: * globalize.culture.es-HN.js: * globalize.culture.dv-MV.js: * globalize.culture.ar-LY.js: * globalize.culture.ar-MA.js: * globalize.culture.ar-OM.js: * globalize.culture.ar-QA.js: * globalize.culture.ar-SA.js: * globalize.culture.ar-SY.js: * globalize.culture.ar-TN.js: * globalize.culture.ar-YE.js: * globalize.culture.ar-LB.js: * globalize.culture.am-ET.js: * globalize.culture.ar-AE.js: * globalize.culture.ar-BH.js: * globalize.culture.ar-DZ.js: * globalize.culture.ar-EG.js: * globalize.culture.ar-IQ.js: * globalize.culture.ar-JO.js: * globalize.culture.ar-KW.js: * globalize.culture.as-IN.js: * globalize.culture.cs-CZ.js: * globalize.culture.cy-GB.js: * globalize.culture.da-DK.js: * globalize.culture.de-AT.js: * globalize.culture.de-CH.js: * globalize.culture.de-DE.js: * globalize.culture.de-LI.js: * globalize.culture.de-LU.js: * globalize.culture.co-FR.js: * globalize.culture.ba-RU.js: * globalize.culture.be-BY.js: * globalize.culture.bg-BG.js: * globalize.culture.bn-BD.js: * globalize.culture.bn-IN.js: * globalize.culture.bo-CN.js: * globalize.culture.br-FR.js: * globalize.culture.ca-ES.js: * globalize.culture.es-VE.js: * globalize.culture.hy-AM.js: * globalize.culture.id-ID.js: * globalize.culture.ig-NG.js: * globalize.culture.ii-CN.js: * globalize.culture.is-IS.js: * globalize.culture.it-CH.js: * globalize.culture.it-IT.js: * globalize.culture.hu-HU.js: * globalize.culture.gd-GB.js: * globalize.culture.gl-ES.js: * globalize.culture.gu-IN.js: * globalize.culture.he-IL.js: * globalize.culture.hi-IN.js: * globalize.culture.hr-BA.js: * globalize.culture.hr-HR.js: * globalize.culture.ja-JP.js: * globalize.culture.lt-LT.js: * globalize.culture.af-ZA.js: * globalize.culture.mi-NZ.js: * globalize.culture.mk-MK.js: * globalize.culture.ml-IN.js: * globalize.culture.mn-MN.js: * globalize.culture.mr-IN.js: * globalize.culture.lo-LA.js: * globalize.culture.ka-GE.js: * globalize.culture.kk-KZ.js: * globalize.culture.kl-GL.js: * globalize.culture.km-KH.js: * globalize.culture.kn-IN.js: * globalize.culture.ko-KR.js: * globalize.culture.ky-KG.js: * globalize.culture.lb-LU.js: * globalize.culture.ga-IE.js: * globalize.culture.fr-CH.js: * globalize.culture.fr-CA.js: * globalize.culture.fr-BE.js: * globalize.culture.fo-FO.js: * globalize.culture.lv-LV.js: * globalize.culture.fi-FI.js: * globalize.culture.fa-IR.js: * globalize.culture.eu-ES.js: * globalize.culture.et-EE.js: * globalize.culture.fr-FR.js: * globalize.culture.fy-NL.js: * globalize.culture.fr-LU.js: * globalize.culture.fr-MC.js: * globalize.culture.sma-SE.js: * globalize.culture.sma-NO.js: * globalize.culture.arn-CL.js: * globalize.culture.qut-GT.js: * globalize.culture.gsw-FR.js: * globalize.culture.fil-PH.js: * globalize.culture.smj-SE.js: * globalize.culture.smn-FI.js: * globalize.culture.sah-RU.js: * globalize.culture.sms-FI.js: * globalize.culture.prs-AF.js: * globalize.culture.syr-SY.js: * globalize.culture.smj-NO.js: * globalize.culture.zh-CHT.js: * globalize.culture.kok-IN.js: * globalize.culture.hsb-DE.js: * globalize.culture.moh-CA.js: * globalize.culture.nso-ZA.js: * globalize.culture.quz-PE.js: * globalize.culture.zh-CHS.js: * globalize.culture.dsb-DE.js: * globalize.culture.quz-BO.js: * globalize.culture.quz-EC.js: * globalize.culture.en-029.js: * globalize.culture.mn-Mong.js: * globalize.culture.mn-Cyrl.js: * globalize.culture.sr-Cyrl.js: * globalize.culture.az-Latn.js: * globalize.culture.az-Cyrl.js: * globalize.culture.sr-Latn.js: * globalize.culture.iu-Latn.js: * globalize.culture.zh-Hant.js: * globalize.culture.zh-Hans.js: * globalize.culture.tg-Cyrl.js: * globalize.culture.uz-Latn.js: * globalize.culture.uz-Cyrl.js: * globalize.culture.ha-Latn.js: * globalize.culture.iu-Cans.js: * globalize.culture.bs-Cyrl.js: * globalize.culture.bs-Latn.js: * globalize.culture.tzm-Latn.js: * globalize.culture.sr-Cyrl-ME.js: * globalize.culture.sr-Cyrl-CS.js: * globalize.culture.bs-Cyrl-BA.js: * globalize.culture.sr-Cyrl-RS.js: * globalize.culture.sr-Cyrl-BA.js: * globalize.culture.mn-Mong-CN.js: * globalize.culture.uz-Cyrl-UZ.js: * globalize.culture.ha-Latn-NG.js: * globalize.culture.iu-Latn-CA.js: * globalize.culture.uz-Latn-UZ.js: * globalize.culture.az-Latn-AZ.js: * globalize.culture.az-Cyrl-AZ.js: * globalize.culture.bs-Latn-BA.js: * globalize.culture.tg-Cyrl-TJ.js: * globalize.culture.iu-Cans-CA.js: * globalize.culture.sr-Latn-RS.js: * globalize.culture.sr-Latn-ME.js: * globalize.culture.sr-Latn-CS.js: * globalize.culture.sr-Latn-BA.js: * globalize.culture.tzm-Latn-DZ.js: * style.css: list in the nav are in line by default. * AdminController.cs: refactoring * App.master: Restores hallo editing by solving again jQuery-ui ref * Login.aspx: Prettier code at building Urls * Admin.aspx: * Index.aspx: * AddRole.aspx: * Backups.aspx: * RemoveUser.aspx: * RemoveRole..aspx: * CreateBackup.aspx: * BackupCreated.aspx: new master page
10 years ago
[Authorize(Roles="Admin"),HttpPost]
public ActionResult AddRole (string rolename)
{
Roles.CreateRole(rolename);
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
ViewData.Notify(LocalizedText.role_created+ " : "+rolename);
return View ();
}
/// <summary>
/// Shows the roles list.
/// </summary>
/// <returns>The list.</returns>
[Authorize()]
public ActionResult RoleList ()
{
return View (Roles.GetAllRoles ());
}
private const string _adminRoleName = "Admin";
/// <summary>
/// Assing the Admin role to the specified user in model.
/// </summary>
/// <param name="model">Model.</param>
[Authorize()]
public ActionResult Admin (NewAdminModel model)
{
// ASSERT (Roles.RoleExists (adminRoleName))
string [] admins = Roles.GetUsersInRole (_adminRoleName);
string currentUser = Membership.GetUser ().UserName;
List<SelectListItem> users = new List<SelectListItem> ();
foreach (MembershipUser u in Membership.GetAllUsers ()) {
var i = new SelectListItem ();
i.Text = string.Format ("{0} <{1}>", u.UserName, u.Email);
i.Value = u.UserName;
users.Add (i);
}
ViewData ["admins"] = admins;
ViewData ["useritems"] = users;
if (ModelState.IsValid) {
Roles.AddUserToRole (model.UserName, _adminRoleName);
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
ViewData.Notify(model.UserName + " "+LocalizedText.was_added_to_the_role+" '" + _adminRoleName + "'");
} else {
if (admins.Length > 0) {
if (! admins.Contains (Membership.GetUser ().UserName)) {
ModelState.Remove("UserName");
ModelState.AddModelError("UserName",LocalizedText.younotadmin+"!");
}
} else {
// No admin, gives the Admin Role to the current user
Roles.AddUserToRole (currentUser, _adminRoleName);
admins = new string[] { currentUser };
recupération de mot de passe + prise de commande * ResetPassword.txt: Un message pour le mot de passe oublié * style.css: fixe un 404 * UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot de passe, accessible depuis l'e-mail. * Contact.aspx: implémente la page de contact préstataire * UpdatePassword.cs: modèle de la modification de mot de passe au jeton de securité (qui est encore un fake en l'état) * CommandRegistration.cs: un enregistrement de commande * NominativeCommandRegistration.cs: un enregistrement de commande nominative * .gitignore: ignore ma config LuaDebug * NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de la question de recupération du mot de passe quand elle est nulle. * BasketController.cs: renvoie l'objet décrivant la prise de commande * Global.asax.cs: ignorer les routes vers App_Data et App_Code * instdbws.sql: passage du type json à jsonb pour les paramètres de la commande * RegistrationMail.txt: un piti message à l'enregistrement * AccountController.cs: Envoi du message du mot de passe oublié, methode de changemnet du mot de passe. * AdminController.cs: xmldoc + refabrication helper Notify * HomeController.cs: * BlogsController.cs: * GoogleController.cs: refabrication helper Notify * FrontOfficeController.cs: Refabrication: Utilisation du nouvel enregistrement de commande. + refabrication helper Notify * YavscHelpers.cs: implémente la methode d'envoi du message de mot de passe oublié + refabrication helper Notify * App.master: Corrige la notification Html * AppAdmin.master: Le lien vers la page de contact était associé à tort à la classe css "thanks" * yavsc.js: message plus parlant en cas de requête Ajax mal formée. * Login.aspx: Implémente le lien vers le formulaire de recupération du mot de passe * UserPost.aspx: . * Booking.aspx: format du code * Performer.ascx: l'e-mail préstataire ne sera jamais fourni par l'application, aussi, on parlera de "prendre contact", d'échanger ... mais pas de donner l'adresse e-mail. L'information "son email" n'est donc pas disponible meme à l'utilisateur autorisé. La prise de contact, ou autre fux de comunication le sont. * Performers.aspx: affiche la notification à l'envoi de la demande de devis * Product.aspx: * Service.aspx: les periodes du catalogue et du calendrier sont fondue. * Contact.aspx: traduction en français * Web.config: * la procédure de recupération du mot de passe est activée * l'e-message envoyé est construit à partir d'un modèle, un fichier texte trouvé dans /App_Data, et indiqué à l'application par le paramêtre applicatif "LostPasswordMessage" * Yavsc.csproj: reference les nouveaux fichiers * Product.cs: utilise la période du calendrier * Commande.cs: renvoie un objet à la prise de commande, indiquant l'identifiant de commande, et les messages envoyés en cas de commande nominative. * GoogleHelpers.cs: icone à la notification mobile * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * UserNameBase.cs: fixe la dé-sérialisation * WorkFlowManager.cs: refabrication de la prise de commande * YavscModel.csproj: nouveaux objets du modèle * OtherWebException.aspx: page obsolete * Period.cs: fondre la période: celle du catalogue disparait, au profit de celle du calendrier.
10 years ago
ViewData.Notify( string.Format (
LocalizedText.was_added_to_the_empty_role,
currentUser, _adminRoleName));
}
}
return View (model);
}
}
}