public async Task <IHttpActionResult> Register(RegisterUserViewModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } CommandWorker.RegisterUser(model); // Create new Account IdentityUser user = new IdentityUser { UserName = model.UserName }; string decryptedPwd = Codec.DecryptStringAES(model.Password); IdentityResult result = UserManager.Create(user, decryptedPwd); IHttpActionResult errorResult = GetErrorResult(result); if (errorResult != null) { return(errorResult); } await MailProvider.GetMailprovider().SendActivationEmail(model.Email, model.UserName, decryptedPwd, model.ActivationKey, Request.Headers.Referrer.AbsoluteUri); //TODO: Remove -> Register a user does NOT require to return a User (needs an activation step) User discuser = await QueryWorker.GetUserByUserName(model.UserName); return(Ok(discuser)); } catch (Exception e) { return(BadDisciturRequest(e.Message)); } }
public override object GetData(int actionType) { //return base.GetData(actionType); ResponseObj = new TransObj(); try { switch ((ActionType)actionType) { case ActionType.LogIn: #region LogIn string us = JsonConvert.DeserializeObject <string>(RequestObj.TransParms.Where(p => p.Key == "user").FirstOrDefault().Value); string pass = JsonConvert.DeserializeObject <string>(RequestObj.TransParms.Where(p => p.Key == "password").FirstOrDefault().Value); //int compId = int.Parse(Codec.DecryptStringAES(RequestObj.TransParms.Where(p => p.Key == "company").FirstOrDefault().Value)); us = Codec.DecryptStringAES(us); ValIntents(us); Data.Model.ASFW_USER usr = Entities.ASFW_USER.Where(u => u.USER == us && u.ACTIVE.Value).FirstOrDefault(); if (usr == null) { throw new AuthenticationException("Usuario/Contraseña incorrectos"); } if (usr.PASS != pass) { int intent = 0; if (usr.INTENTS.HasValue) { if (usr.INTENTS.Value >= 3) { if ((DateTime.Now - usr.LAST_INTENT.Value).TotalMinutes < 60) { if (LastIntents.Count(l => l.Key == us) == 0) { LastIntents.Add(us, DateTime.Now); } usr.INTENTS = intent++; usr.LAST_INTENT = DateTime.Now; Entities.SaveChanges(); throw new AuthenticationException("Ha Excedido el numero máximo de intentos. Comuniquese con el Administrador del sistema."); } } intent = usr.INTENTS.Value; } usr.INTENTS = intent++; usr.LAST_INTENT = DateTime.Now; Entities.SaveChanges(); throw new AuthenticationException("Usuario/Contraseña incorrectos"); } if (LastIntents.Count(l => l.Key == (us)) > 0) { LastIntents.Remove(us); } Guid usrTokenId = Guid.NewGuid(); Entities.ASFW_ACTIVESESSION.RemoveRange(Entities.ASFW_ACTIVESESSION.Where(p => p.USERID == usr.USERID)); Entities.ASFW_ACTIVESESSION.Add(new Data.Model.ASFW_ACTIVESESSION() { ACTIVESESSIONID = usrTokenId, USERID = usr.USERID, LASTACTIVITY = DateTime.Now, COMPANYID = usr.COMPANYID }); Entities.SaveChanges(); var compny = Entities.ASFW_COMPANY.Select(c => new { c.NAME, c.COMPANYID }).Where(c => c.COMPANYID == usr.COMPANYID).FirstOrDefault(); ResponseObj.UsrObj.UsrId = usr.USERID; ResponseObj.UsrObj.UsrName = usr.FIRST_NAME + //(string.IsNullOrEmpty(usr.SECOND_NAME) ? "" : " " + usr.SECOND_NAME) + (string.IsNullOrEmpty(usr.FIRST_LASTNAME) ? "" : " " + usr.FIRST_LASTNAME); //(string.IsNullOrEmpty(usr.SECOND_LASTNAME) ? "" : " " + usr.SECOND_LASTNAME) ; ResponseObj.UsrObj.UsrPfl = usr.PROFILEID.Value; ResponseObj.UsrObj.UsrToken = usrTokenId; ResponseObj.UsrObj.UsrCpny = usr.COMPANYID; ResponseObj.UsrObj.UsrCpnyN = compny.NAME; ResponseObj.UsrObj.UsrConfParms = usr.CONFIG_PARMS; ResponseObj.TransObjId = 10002; ResponseObj.TransWindow = "content/home.html"; ResponseObj.MessCode = TransObj.MessCodes.Ok; #endregion break; case ActionType.LogOut: break; default: break; } } catch (Exception ex) { throw; } return(ResponseObj); }
public async Task <IHttpActionResult> ChangePassword(ChangePasswordBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), Codec.DecryptStringAES(model.OldPassword), Codec.DecryptStringAES(model.NewPassword)); IHttpActionResult errorResult = GetErrorResult(result); if (errorResult != null) { return(errorResult); } return(Ok()); }