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.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2015-11-21 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* Makefile: retour au débuggage de la copie de travaille, et
|
||||
pas de la déployée
|
||||
|
||||
2015-11-19 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* .gitignore: ignore my new config transformation sources
|
||||
|
6
Makefile
6
Makefile
@ -59,8 +59,8 @@ distclean: clean
|
||||
sourcepkg:
|
||||
git archive --format=tar --prefix=yavsc-$(CONFIG)/ $(CONFIG) | bzip2 > yavsc-$(CONFIG).tar.bz2
|
||||
|
||||
start_xsp: deploy
|
||||
(cd $(LDYDESTDIR); export MONO_OPTIONS=--debug; xsp4 --port 8080)
|
||||
start_xsp: build
|
||||
(cd web; export MONO_OPTIONS=--debug; xsp4 --port 8080)
|
||||
|
||||
xmldoc: $(patsubst %,web/bin/%,$(DOCASSBS))
|
||||
mdoc-update $^ $(patsubst %.dll,-i%.xml,$^) --out web/xmldoc
|
||||
@ -84,3 +84,5 @@ nuget_restore:
|
||||
|
||||
nuget_update:
|
||||
for prj in ITContentProvider NpgsqlBlogProvider NpgsqlContentProvider NpgsqlMRPProviders Presta SalesCatalog TestAPI web WebControls yavscclient yavscModel; do nuget update "$${prj}/packages.config" ; done
|
||||
|
||||
|
||||
|
@ -96,20 +96,32 @@ namespace Yavsc.ApiControllers
|
||||
[ValidateAjax]
|
||||
public void ResetPassword (LostPasswordModel model)
|
||||
{
|
||||
StringDictionary errors;
|
||||
MembershipUser user;
|
||||
YavscHelpers.ValidatePasswordReset (model, out errors, out user);
|
||||
foreach (string key in errors.Keys)
|
||||
ModelState.AddModelError (key, errors [key]);
|
||||
if (user != null && ModelState.IsValid)
|
||||
Url.SendActivationMessage (user);
|
||||
if (ModelState.IsValid) {
|
||||
StringDictionary errors;
|
||||
MembershipUser user;
|
||||
YavscHelpers.ValidatePasswordReset (model, out errors, out user);
|
||||
foreach (string key in errors.Keys)
|
||||
ModelState.AddModelError (key, errors [key]);
|
||||
if (user != null && ModelState.IsValid)
|
||||
Url.SendActivationMessage (user);
|
||||
}
|
||||
}
|
||||
|
||||
[ValidateAjax]
|
||||
[Authorize(Roles="Admin")]
|
||||
public void AddUserToRole(UserRole model)
|
||||
{
|
||||
Roles.AddUserToRole (model.UserName, model.Role);
|
||||
if (ModelState.IsValid)
|
||||
Roles.AddUserToRole (model.UserName, model.Role);
|
||||
}
|
||||
|
||||
[ValidateAjax]
|
||||
[Authorize(Roles="Admin")]
|
||||
public void RemoveUserFromRole(UserRole model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
Roles.RemoveUserFromRoles (model.UserName,
|
||||
new string [] { model.Role } );
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -154,13 +154,16 @@ ul.editablelist>li {
|
||||
border: solid grey 1px;
|
||||
border-radius: 1em;
|
||||
}
|
||||
|
||||
ul.editablelist>li:before {
|
||||
font-family: 'FontAwesome';
|
||||
content: "\f007";
|
||||
}
|
||||
ul.editablelist>li:hover {
|
||||
background-color: rgba(128,0,0,0.5);
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
ul.editablelist>li:hover:after {
|
||||
ul.editablelist>li:hover:before {
|
||||
font-family: 'FontAwesome';
|
||||
content: "\f00d";
|
||||
}
|
||||
|
@ -40,11 +40,16 @@ namespace Yavsc
|
||||
{
|
||||
// let the client know which role were allowed here
|
||||
// filterContext.ActionDescriptor.ControllerDescriptor.
|
||||
filterContext.Result = new System.Web.Mvc.RedirectResult ("~/Home/RestrictedArea");
|
||||
var result = new System.Web.Mvc.ViewResult();
|
||||
|
||||
filterContext.Controller.ViewData ["ActionName"] = filterContext.ActionDescriptor.ActionName;
|
||||
filterContext.Controller.ViewData ["ControllerName"] = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
|
||||
filterContext.Controller.ViewData ["Roles"] = Roles;
|
||||
filterContext.Controller.ViewData ["Users"] = Users;
|
||||
result.ViewName = "RestrictedArea";
|
||||
result.ViewData = filterContext.Controller.ViewData;
|
||||
filterContext.Result = result;
|
||||
|
||||
}
|
||||
else filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
|
||||
}
|
||||
|
@ -1,3 +1,87 @@
|
||||
2015-11-21 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* 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.
|
||||
|
||||
* 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
|
||||
qui restreint quelque de ses accès.
|
||||
|
||||
|
||||
2015-11-19 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* PayPalController.cs: implements a Paypal controller
|
||||
|
@ -133,6 +133,7 @@ namespace Yavsc.Controllers
|
||||
BuildBackupList (datac);
|
||||
return View (datac);
|
||||
}
|
||||
|
||||
private void BuildBackupList(DataAccess datac)
|
||||
{
|
||||
// build ViewData ["Backups"];
|
||||
@ -151,16 +152,18 @@ namespace Yavsc.Controllers
|
||||
/// <param name="rolename">Rolename.</param>
|
||||
/// <param name="returnUrl">Return URL.</param>
|
||||
[Authorize(Roles="Admin")]
|
||||
public ActionResult RemoveFromRole(string username, string rolename, string returnUrl)
|
||||
public ActionResult RemoveUserFromRole(string username, string rolename, string returnUrl)
|
||||
{
|
||||
Roles.RemoveUserFromRole(username,rolename);
|
||||
if (ModelState.IsValid)
|
||||
Roles.RemoveUserFromRole(username,rolename);
|
||||
return Redirect(returnUrl);
|
||||
}
|
||||
|
||||
[Authorize(Roles="Admin")]
|
||||
public ActionResult AddUserToRole(string username, string rolename, string returnUrl)
|
||||
{
|
||||
Roles.AddUsersToRole(new string[] { username } ,rolename);
|
||||
if (ModelState.IsValid)
|
||||
Roles.AddUsersToRole(new string[] { username } ,rolename);
|
||||
return Redirect(returnUrl);
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -101,10 +101,6 @@ namespace Yavsc.Controllers
|
||||
return View ();
|
||||
}
|
||||
|
||||
public ActionResult RestrictedArea ()
|
||||
{
|
||||
return View ();
|
||||
}
|
||||
/// <summary>
|
||||
/// Contact the specified email, reason and body.
|
||||
/// </summary>
|
||||
|
@ -36,12 +36,12 @@ namespace Yavsc.Helpers
|
||||
/// <param name="helper">Helper.</param>
|
||||
/// <param name="message">Message.</param>
|
||||
/// <param name="click_action">Click action.</param>
|
||||
public static void Notify(this AjaxHelper helper, string message, string click_action=null) {
|
||||
public static void Notify(this AjaxHelper helper, object message, string click_action=null) {
|
||||
|
||||
if (helper.ViewData ["Notifications"] == null)
|
||||
helper.ViewData ["Notifications"] = new List<Notification> ();
|
||||
(helper.ViewData ["Notifications"] as List<Notification>).Add (
|
||||
new Notification { body = QuoteJavascriptString(message),
|
||||
new Notification { body = QuoteJavascriptString((string)message),
|
||||
click_action = click_action } ) ;
|
||||
}
|
||||
|
||||
@ -50,15 +50,21 @@ namespace Yavsc.Helpers
|
||||
/// </summary>
|
||||
/// <returns>The javascript string.</returns>
|
||||
/// <param name="str">String.</param>
|
||||
public static string QuoteJavascriptString(string str)
|
||||
public static string QuoteJavascriptString(object str)
|
||||
{
|
||||
str = str.Replace ("\n", "\\n");
|
||||
if (str.Contains ("'"))
|
||||
if (str.Contains ("\""))
|
||||
return "'" + str.Replace ("'", "\\'") + "'";
|
||||
string tmpstr = (string) str;
|
||||
tmpstr = tmpstr.Replace ("\n", "\\n");
|
||||
if (tmpstr.Contains ("'"))
|
||||
if (tmpstr.Contains ("\""))
|
||||
return "'" + tmpstr.Replace ("'", "\\'") + "'";
|
||||
else
|
||||
return "\"" + str + "\"";
|
||||
return "'" + str + "'";
|
||||
return "\"" + tmpstr + "\"";
|
||||
return "'" + tmpstr + "'";
|
||||
}
|
||||
|
||||
public static string JString(this AjaxHelper helper, object str)
|
||||
{
|
||||
return QuoteJavascriptString (str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
BIN
web/Microsoft.Web.XmlTransform.dll
Executable file
BIN
web/Microsoft.Web.XmlTransform.dll
Executable file
Binary file not shown.
@ -23,6 +23,9 @@ Page.StyleSheetTheme = (string) Profile.UITheme; %>
|
||||
<script src="<%=Url.Content("~/Scripts/Prettify/run_prettify.js")%>"></script>
|
||||
<script type="text/javascript">
|
||||
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
$(document).ready(function(){
|
||||
$('[data-type="rate-bill"]').rate({target: 'Blogs/Rate'});
|
||||
});
|
||||
</script>
|
||||
<%=Ajax.GlobalizationScript()%>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.js")%>"></script>
|
||||
|
@ -4,18 +4,14 @@
|
||||
<% ViewState["orgtitle"] = Html.Translate(Page.Title); %>
|
||||
<% Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName;
|
||||
Page.Theme = (string) Profile.UITheme;
|
||||
Page.StyleSheetTheme = (string) Profile.UITheme;
|
||||
|
||||
%>
|
||||
Page.StyleSheetTheme = (string) Profile.UITheme; %>
|
||||
<asp:ContentPlaceHolder id="init" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
|
||||
</asp:ContentPlaceHolder>
|
||||
<head runat="server">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/"+Page.StyleSheetTheme+"/style.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/style.css")%>" />
|
||||
<%= Html.ThemeCSSLinks(Page.StyleSheetTheme,"style")%>
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/font-awesome.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/jquery-ui.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/prettify.css")%>" />
|
||||
@ -49,7 +45,7 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
$(document).ready(function(){
|
||||
<% foreach (Notification note in (IEnumerable<Notification>) ViewData ["Notifications"] ) {
|
||||
if (note.click_action == null) {%> Yavsc.notice(<%=note.body%>); <% }
|
||||
else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>); <% } %>
|
||||
else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_action_name%>); <% } %>
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
|
@ -4,18 +4,14 @@
|
||||
<% ViewState["orgtitle"] = Html.Translate(Page.Title); %>
|
||||
<% Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName;
|
||||
Page.Theme = (string) Profile.UITheme;
|
||||
Page.StyleSheetTheme = (string) Profile.UITheme;
|
||||
|
||||
%>
|
||||
Page.StyleSheetTheme = (string) Profile.UITheme; %>
|
||||
<asp:ContentPlaceHolder id="init" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
|
||||
<head runat="server">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/"+Page.StyleSheetTheme+"/style.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/style.css")%>" />
|
||||
<%= Html.ThemeCSSLinks(Page.StyleSheetTheme,"style")%>
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/font-awesome.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/jquery-ui.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/prettify.css")%>" />
|
||||
@ -27,9 +23,14 @@ Page.StyleSheetTheme = (string) Profile.UITheme;
|
||||
<script src="<%=Url.Content("~/Scripts/Prettify/run_prettify.js")%>"></script>
|
||||
<script type="text/javascript">
|
||||
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
$(document).ready(function(){
|
||||
$('[data-type="rate-bill"]').rate({target: 'Blogs/Rate'});
|
||||
});
|
||||
</script>
|
||||
<%=Ajax.GlobalizationScript()%>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.tags.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.rate.js")%>"></script>
|
||||
<asp:ContentPlaceHolder id="head" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
</head>
|
||||
|
37
web/Scripts/yavsc.admin.js
Normal file
37
web/Scripts/yavsc.admin.js
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
var Admin = (function(){
|
||||
var self = {};
|
||||
self.addUserToRole = function (user,role,callback) {
|
||||
Yavsc.ajax('Account/AddUserToRole',
|
||||
{ username: user, role: role }, callback );
|
||||
};
|
||||
self.removeUserFromRole = function (user,role,callback) {
|
||||
Yavsc.ajax('Account/RemoveUserFromRole',
|
||||
{ username: user, role: role }, callback );
|
||||
}
|
||||
|
||||
return self;
|
||||
})();
|
||||
|
||||
(function() {
|
||||
(function(jQuery) {
|
||||
return jQuery.widget('Yavsc.decharger', {
|
||||
options: {
|
||||
roleName: 'Admin',
|
||||
},
|
||||
_create: function() {
|
||||
var _this = this;
|
||||
var $bgobj = $(this.element);
|
||||
// console.log ('Dechargeable:'+$bgobj.text());
|
||||
$bgobj.click(function() {
|
||||
var user = $bgobj.text();
|
||||
Admin.removeUserFromRole(user,_this.options.roleName,
|
||||
function() {
|
||||
$bgobj.remove();
|
||||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
})(jQuery);
|
||||
}).call(this);
|
||||
|
@ -49,9 +49,3 @@
|
||||
},
|
||||
})})(jQuery);
|
||||
}).call(this);
|
||||
|
||||
$(document).ready(function(){
|
||||
$('[data-type="rate-site-skill"]').rate({target: 'Skill/RateSkill'});
|
||||
$('[data-type="rate-user-skill"]').rate({target: 'Skill/RateUserSkill'});
|
||||
$('[data-type="rate-bill"]').rate({target: 'Blogs/Rate'});
|
||||
});
|
||||
|
13
web/Views/Account/RestrictedArea.aspx
Normal file
13
web/Views/Account/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
@ -1,18 +1,17 @@
|
||||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
|
||||
<%= Html.ValidationSummary() %>
|
||||
<% using(Html.BeginForm("AddUserToRole", "Admin"))
|
||||
{ %>
|
||||
<form action="AddUserToRole" method="POST" id="frmAUTR">
|
||||
<fieldset>
|
||||
<div id="roleaddedresult"></div>
|
||||
<% if (ViewData ["UserName"] != null) { %>
|
||||
<%= Html.Hidden("RoleName",ViewData ["RoleName"]) %>
|
||||
<% } else { %>
|
||||
<div>
|
||||
<label for="UserName" >Utilisateur : </label><input type="text" name="UserName" id="UserName">
|
||||
<label for="UserName" >Utilisateur : </label>
|
||||
<div id="Err_model_UserName"></div>
|
||||
<input type="text" name="UserName" id="UserName">
|
||||
<%= Html.ValidationMessage("UserName", "*") %>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<% if (ViewData ["RoleName"] != null) { %>
|
||||
<%= Html.Hidden("RoleName",ViewData ["RoleName"]) %>
|
||||
<% } else { %>
|
||||
@ -22,8 +21,20 @@
|
||||
<%= Html.ValidationMessage("RoleName", "*") %>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<%= Html.Hidden("ReturnUrl", Request.Url.PathAndQuery ) %>
|
||||
<input type="submit">
|
||||
<script>
|
||||
$("form").on ('submit', function (e) { return e.preventDefault(); } );
|
||||
function ajaxSubmit() {
|
||||
var user = $('#UserName').val();
|
||||
var role = $('#RoleName').val();
|
||||
Admin.addUserToRole(user, role,
|
||||
function () { $('#UserName').val('');
|
||||
$('[data-type="userlist"]').filter('[data-role='+role+']').each(function() {
|
||||
$('<li>'+user+'</li>').decharger({roleName: <%= YavscAjaxHelper.QuoteJavascriptString((string)ViewData["RoleName"]) %>}).appendTo(this);
|
||||
});
|
||||
} );
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
<input type="submit" value="Ajouter l'utilisateur au rôle <%=ViewData ["RoleName"]%>" onclick="return ajaxSubmit();" >
|
||||
</fieldset>
|
||||
<% } %>
|
||||
</form>
|
||||
|
13
web/Views/Admin/RestrictedArea.aspx
Normal file
13
web/Views/Admin/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
@ -2,7 +2,16 @@
|
||||
<asp:Content ContentPlaceHolderID="init" ID="init1" runat="server">
|
||||
<% ViewState["orgtitle"] = string.Format ( LocalizedText.UsersInRole , Html.Encode(ViewData["RoleName"])); %>
|
||||
<% Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName; %>
|
||||
|
||||
</asp:Content>
|
||||
<asp:Content ContentPlaceHolderID="head" ID="head1" runat="server">
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.admin.js")%>"></script>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$('[data-type="userlist"]').children().each(function() {
|
||||
$(this).decharger({roleName: <%= YavscAjaxHelper.QuoteJavascriptString((string)ViewData["RoleName"]) %>});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</asp:Content>
|
||||
<asp:Content ContentPlaceHolderID="overHeaderOne" ID="header1" runat="server">
|
||||
<h1><a href="<%= Url.RouteUrl("Default", new { action = "UsersInRole", RoleName = ViewData["RoleName"] } )%>">
|
||||
@ -11,7 +20,8 @@
|
||||
</h1>
|
||||
</asp:Content>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<ul class="editablelist userlist">
|
||||
<ul class="editablelist" data-role="<%=ViewData["RoleName"]%>" data-type="userlist">
|
||||
|
||||
<%foreach (string username in (string[]) ViewData["UsersInRole"]){ %>
|
||||
<li><%= username %></li>
|
||||
<% } %>
|
||||
|
13
web/Views/BackOffice/RestrictedArea.aspx
Normal file
13
web/Views/BackOffice/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
13
web/Views/Blogs/RestrictedArea.aspx
Normal file
13
web/Views/Blogs/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
13
web/Views/FileSystem/RestrictedArea.aspx
Normal file
13
web/Views/FileSystem/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
13
web/Views/FrontOffice/RestrictedArea.aspx
Normal file
13
web/Views/FrontOffice/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
@ -2,6 +2,11 @@
|
||||
|
||||
<asp:Content ID="headContent" ContentPlaceHolderID="head" runat="server">
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.skills.js")%>"></script>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$('[data-type="rate-site-skill"]').rate({target: 'Skill/RateSkill'});
|
||||
});
|
||||
</script>
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
|
||||
|
@ -2,6 +2,11 @@
|
||||
|
||||
<asp:Content ID="headContent" ContentPlaceHolderID="head" runat="server">
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.skills.js")%>"></script>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$('[data-type="rate-user-skill"]').rate({target: 'Skill/RateUserSkill'});
|
||||
});
|
||||
</script>
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
|
||||
|
13
web/Views/Google/RestrictedArea.aspx
Normal file
13
web/Views/Google/RestrictedArea.aspx
Normal file
@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
@ -3,9 +3,11 @@
|
||||
Ce contenu est d'accès restreint :<br>
|
||||
<<%= Html.Encode(ViewData["ControllerName"]) %>/<%= Html.Encode(ViewData["ActionName"]) %>><br>
|
||||
|
||||
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<i>Admin only:</i>
|
||||
Ci après les tièrces parties autorisée actuellement :<br>
|
||||
|
||||
Roles autorisés :<%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Roles autorisés : <%= Html.Encode(ViewData["Roles"]) %><br>
|
||||
Utilisateurs autorisés :<%= Html.Encode(ViewData["Users"]) %><br>
|
||||
<% } %>
|
||||
</asp:Content>
|
@ -498,6 +498,14 @@
|
||||
<Content Include="Views\PayPal\IPN.aspx" />
|
||||
<Content Include="Web.Debug.config" />
|
||||
<Content Include="Web.Lua.config" />
|
||||
<Content Include="Scripts\yavsc.admin.js" />
|
||||
<Content Include="Views\FrontOffice\RestrictedArea.aspx" />
|
||||
<Content Include="Views\Admin\RestrictedArea.aspx" />
|
||||
<Content Include="Views\Blogs\RestrictedArea.aspx" />
|
||||
<Content Include="Views\Google\RestrictedArea.aspx" />
|
||||
<Content Include="Views\FileSystem\RestrictedArea.aspx" />
|
||||
<Content Include="Views\BackOffice\RestrictedArea.aspx" />
|
||||
<Content Include="Views\Account\RestrictedArea.aspx" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
|
@ -1,3 +1,9 @@
|
||||
2015-11-21 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* UserNameBase.cs: Permet l'usage des espaces dans les noms
|
||||
d'utilisateurs,
|
||||
à la création legacy, ou autres usage du nom d'utilisateur.
|
||||
|
||||
2015-11-19 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* YavscModel.csproj: Lua config
|
||||
|
@ -31,7 +31,7 @@ namespace Yavsc.Model.RolesAndMembers
|
||||
/// </summary>
|
||||
/// <value>The name of the user.</value>
|
||||
[Localizable(true), Required(ErrorMessage = "S'il vous plait, entrez un nom d'utilisateur")
|
||||
,Display(ResourceType=typeof(LocalizedText),Name="User_name"),RegularExpression("([a-z]|[A-Z]|[0-9] )+")]
|
||||
,Display(ResourceType=typeof(LocalizedText),Name="User_name"),RegularExpression(@"^[a-zA-Z .-_#]{1,100}$")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user