コード例 #1
0
        public async Task <IActionResult> SignUp([FromBody] AccountSecurity model)
        {
            if (ModelState.IsValid)
            {
                if (VerifyUniqueEmail(model.Email))
                {
                    return(BadRequest(new
                    {
                        Message = "Email already exists"
                    }));
                }
                model.UserId   = Guid.NewGuid();
                model.Password = PasswordUseFull.GetHash(model.Password);

                for (int j = 0; j < model.Phones.Count; j++)
                {
                    model.Phones[j].UserId = model.UserId;
                }

                var createduser = _context.AccountSecurity.Add(model);

                if (createduser == null)
                {
                    return(BadRequest(new
                    {
                        Message = "Username or password invalid"
                    }));
                }

                _context.SaveChanges();
                account = new Account()
                {
                    CreatedOn    = DateTime.Now,
                    IdUser       = model.UserId,
                    LastLoginOn  = DateTime.Now,
                    LastUpdateOn = DateTime.Now
                };

                return(BuildSignUpResponse(model));
            }

            return(BadRequest(ModelState));
        }
コード例 #2
0
        public IActionResult SignIn([FromBody] AccountSecurity model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var resultAccountSecurity = _context.AccountSecurity.FirstOrDefault(x => x.Email == model.Email);

                    if (resultAccountSecurity?.Email == null)
                    {
                        return(BadRequest(new
                        {
                            Message = "Invalid user and / or password"
                        }));
                    }

                    bool isValid = PasswordUseFull.ValidatePass(model.Password, resultAccountSecurity.Password);

                    if (!isValid)
                    {
                        return(Unauthorized());
                    }
                    var resultAccount = _context.Account
                                        .Where(c => c.IdUser == resultAccountSecurity.UserId)
                                        .OrderByDescending(t => t.LastLoginOn)
                                        .FirstOrDefault();

                    var token = BuildToken(model);

                    Token tokenInfo = new Token()
                    {
                        CreatedDate = DateTime.Now,
                        GuidToken   = new Guid(token.Id),
                        ValueToken  = new JwtSecurityTokenHandler().WriteToken(token)
                    };
                    if (resultAccount != null)
                    {
                        Account account = new Account()
                        {
                            IdUser       = resultAccountSecurity.UserId,
                            CreatedOn    = resultAccount.CreatedOn,
                            LastLoginOn  = DateTime.Now,
                            LastUpdateOn = DateTime.Now,
                            TokenId      = new Guid(token.Id)
                        };

                        _context.Account.Add(account);
                        _context.Tokens.Add(tokenInfo);
                        _context.SaveChanges();
                    }

                    if (resultAccount != null)
                    {
                        return(Ok(new
                        {
                            idUser = resultAccountSecurity.UserId,
                            createdOn = resultAccount.CreatedOn,
                            lastUpdateOn = resultAccount.LastUpdateOn,
                            lastloginOn = resultAccount.LastLoginOn,
                            token = new JwtSecurityTokenHandler().WriteToken(token)
                        }));
                    }

                    return(BadRequest(new
                    {
                        Message = "Invalid user and / or password"
                    }));
                }
                return(BadRequest());
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }