Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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());
        }