yavsc/web/ApiControllers/AccountController.cs
Paul Schneider 87edbaffe5 * cldr.js:
* Web.config:
* ListItem.cs:
* styles.json:
* globalize.js:
* event.js:
* Auth.aspx:
* Book.aspx:
* Login.aspx:
* jquery-2.1.4.js:
* map-load.gif:
* Book.aspx:
* Circle.cs:
* Auth.aspx:
* mapstyle.css:
* date.js:
* Login.aspx:
* mdd_help.htm:
* BlogHelper.cs:
* fit-bounds.png:
* unresolved.js:
* jquery-2.1.4.min.js:
* mapstyle-ie.css:
* FreeDate.cs:
* BookEdit.cs:
* number.js:
* BlogManager.cs:
* plural.js:
* jquery-2.1.4.min.map:
* jquery.googlemaps.js:
* supplemental.js:
* BlogProvider.cs:
* mapstyle.min.css:
* pin-pink.png:
* message.js:
* ChooseADate.aspx:
* pin-azure.png:
* currency.js:
* jquery-2.1.4-vsdoc.js:
* pin-green.png:
* MarkdownDeepLib.min.js:
* flag-azure.png:
* flag-green.png:
* needle-pink.png:
* ChooseADate.aspx:
* niddle-green.png:
* ChooseCalendar.aspx:
* current-location.png:
* jquery.googlemaps.min.js:
* ErrorMessage.aspx:
* ChooseCalendar.aspx:
* relative-time.js:
* GoogleErrorMessage.aspx:
* popup-template-marker.html:
* popup-template-circle.html:
* popup-template-polygon.html:
* popup-template-polyline.html:
* popup-template-rectangle.html:

* Web.csproj:
* YavscModel.csproj:
* YavscClient.csproj:
* fortune.csproj:
* WebControls.csproj:
* SalesCatalog.csproj:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlContentProvider.csproj: Moves to Mono framework

* NpgsqlCircleProvider.cs: Makes Circles private, or not

* OAuth2.cs:
* CircleController.cs:
* AccountController.cs:
* NpgsqlContentProvider.cs: Impacts htmldoc

* NpgsqlMembershipProvider.cs: Makes possible to change the UserName

* NpgsqlRoleProvider.cs: Drops this SQL code, which is actually
  maintained in Web/instdbws.sql

* PeopleApi.cs:
* GoogleController.cs:
* PaypalController.cs: Refactoring

* Global.asax.cs: Dropped an useless url mapping

* MarkdownHelper.cs: Package update

* App.master:
* NoLogin.master: Site's favicon update

* Circles.aspx: TO BE FIXED :-D

* UserPost.aspx: Comment only when logged in

* instdbws.sql: Circle public

* packages.config: package update
2015-07-15 03:36:12 +02:00

114 lines
3.4 KiB
C#

//
// AccountController.cs
//
// Author:
// Paul Schneider <paul@pschneider.fr>
//
// Copyright (c) 2015 GNU GPL
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using System.Web.Http;
using System.Net.Http;
using Yavsc.Model.RolesAndMembers;
using System.Web.Security;
using System.Web.Profile;
using Yavsc.Helpers;
using System.Collections.Specialized;
namespace Yavsc.ApiControllers
{
/// <summary>
/// Account controller.
/// </summary>
public class AccountController : ApiController
{
/// <summary>
/// Register the specified model.
/// </summary>
/// <param name="model">Model.</param>
[Authorize()]
[ValidateAjaxAttribute]
public HttpResponseMessage Register ([FromBody] RegisterClientModel model)
{
if (ModelState.IsValid) {
if (model.IsApprouved)
if (!Roles.IsUserInRole ("Admin"))
if (!Roles.IsUserInRole ("FrontOffice")) {
ModelState.AddModelError ("Register",
"Since you're not member of Admin or FrontOffice groups, " +
"you cannot ask for a pre-approuved registration");
return DefaultResponse ();
}
MembershipCreateStatus mcs;
var user = Membership.CreateUser (
model.UserName,
model.Password,
model.Email,
model.Question,
model.Answer,
model.IsApprouved,
out mcs);
switch (mcs) {
case MembershipCreateStatus.DuplicateEmail:
ModelState.AddModelError ("Email", "Cette adresse e-mail correspond " +
"à un compte utilisateur existant");
break;
case MembershipCreateStatus.DuplicateUserName:
ModelState.AddModelError ("UserName", "Ce nom d'utilisateur est " +
"déjà enregistré");
break;
case MembershipCreateStatus.Success:
if (!model.IsApprouved)
YavscHelpers.SendActivationMessage (user);
ProfileBase prtu = ProfileBase.Create (model.UserName);
prtu.SetPropertyValue("Name",model.Name);
prtu.SetPropertyValue("Address",model.Address);
prtu.SetPropertyValue("CityAndState",model.CityAndState);
prtu.SetPropertyValue("Mobile",model.Mobile);
prtu.SetPropertyValue("Phone",model.Phone);
prtu.SetPropertyValue("ZipCode",model.ZipCode);
break;
default:
break;
}
}
return DefaultResponse ();
}
private HttpResponseMessage DefaultResponse()
{
return ModelState.IsValid ?
Request.CreateResponse (System.Net.HttpStatusCode.OK) :
Request.CreateResponse (System.Net.HttpStatusCode.BadRequest,
ValidateAjaxAttribute.GetErrorModelObject (ModelState));
}
/// <summary>
/// Resets the password.
/// </summary>
/// <param name="model">Model.</param>
[ValidateAjax]
public void ResetPassword(LostPasswordModel model)
{
StringDictionary errors;
YavscHelpers.ResetPassword (model, out errors);
foreach (string key in errors.Keys)
ModelState.AddModelError (key, errors [key]);
}
}
}