コード例 #1
0
        public User Save(User user)
        {
            try
            {
                if (_context.Users.EntityChange(user))
                {
                    if (_context.Users.Update(user) == 0)
                    {
                        return(user);
                    }
                }
                else
                {
                    var dbUser = _context.Users.Find(u => u.Email.ToLower() == user.Email.ToLower());
                    if (dbUser == null)
                    {
                        user.Id           = Guid.NewGuid();
                        user.PasswordSalt = _passwordHelper.CreateSalt();
                        user.Password     = _passwordHelper.CreatePasswordHash(user.Password, user.PasswordSalt);
                        user.UserType     = Enums.UserType.Unknow;

                        return(_context.Users.Create(user));
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.ErrorFormat("Exception: {0}", ex.ToString());
                return(null);
            }

            return(null);
        }
コード例 #2
0
        public async Task <IActionResult> PutAccount(Account account)
        {
            var requestor = await _TokenManager.GetTokenOwner();

            if (!(requestor.Admin || account.ID == requestor.ID))
            {
                return(Unauthorized());
            }

            if (account.Password != "" && account.ID == requestor.ID)
            {
                account.Password = _PasswordHelper.CreatePasswordHash(account.Password);
            }
            else
            {
                await ReturnPassword(account);
            }

            _Context.Entry(account).State = EntityState.Modified;

            try {
                await _Context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException) {
                if (!AccountExists(account.ID))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #3
0
        private Account AuthenticateAccount(Login login)
        {
            var passwordHash = _PasswordHelper.CreatePasswordHash(login.Password);

            return(_Context.Accounts.SingleOrDefault(a => a.Email == login.Email && a.Password == passwordHash));
        }