Пример #1
0
        public async Task <Status> Register(RegisterModel registerModel, CancellationToken cancellationToken)
        {
            var user = _passwordWalletContext.Users.Any(u => u.Login == registerModel.Login);

            if (user)
            {
                return(CreateStatus(false, string.Format("User with login {0} exist", registerModel.Login)));
            }

            var salt         = Guid.NewGuid().ToString();
            var passwordHash = PreapreHashPassword(registerModel.Password, salt, registerModel.IsPasswordKeptAsHash);

            var newUser = new User
            {
                Id                   = Guid.NewGuid(),
                PasswordHash         = passwordHash,
                Salt                 = salt,
                IsPasswordKeptAsHash = registerModel.IsPasswordKeptAsHash,
                Login                = registerModel.Login
            };

            var function = await _passwordWalletContext.Functions.FirstOrDefaultAsync(x => x.Name == FunctionName.Auth.SignUp, cancellationToken);

            await LogFunction(function.Id, newUser.Id, cancellationToken);

            await _passwordWalletContext.AddAsync(newUser, cancellationToken);

            await _passwordWalletContext.SaveChangesAsync(cancellationToken);

            return(CreateStatus(true, "Succesfully sign up"));
        }
Пример #2
0
        public async Task <Status> AddNewPassowrd(AddPasswordModel addPasswordModel, string login, CancellationToken cancellationToken)
        {
            var user = _passwordWalletContext.Users.FirstOrDefault(user => user.Login == login);

            if (user == null)
            {
                return(new Status(false, "User not exist"));
            }

            var function = await _passwordWalletContext.Functions.FirstOrDefaultAsync(x => x.Name == FunctionName.Wallet.AddPassword, cancellationToken);

            await LogFunction(function.Id, user.Id, cancellationToken);

            _memoryCache.TryGetValue(string.Format("Password for {0}", login), out string passwordHash);
            if (passwordHash == null)
            {
                return(new Status
                {
                    Success = false,
                    Messege = "Can't find user"
                });
            }
            var password = SymmetricEncryptor.EncryptString(addPasswordModel.Password, passwordHash);

            var passwordWallet = new Password
            {
                Login         = addPasswordModel.Login,
                Description   = addPasswordModel.Description,
                PasswordValue = password,
                WebAddress    = addPasswordModel.WebPage,
                UserId        = user.Id,
            };

            await _passwordWalletContext.AddAsync(passwordWallet, cancellationToken);

            await _passwordWalletContext.SaveChangesAsync(cancellationToken);

            var actionChanges = new DataChange
            {
                UserId        = user.Id,
                PreviousValue = null,
                CurrentValue  = JsonConvert.SerializeObject(new Password
                {
                    Id            = passwordWallet.Id,
                    IsDeleted     = passwordWallet.IsDeleted,
                    Login         = passwordWallet.Login,
                    Description   = passwordWallet.Description,
                    PasswordValue = passwordWallet.PasswordValue,
                    UserId        = passwordWallet.UserId,
                    WebAddress    = passwordWallet.WebAddress,
                }),
                ActionType = ActionType.CREATE,
                RecordId   = passwordWallet.Id,
                UpdatedAt  = DateTime.Now,
            };
            await _passwordWalletContext.AddAsync(actionChanges, cancellationToken);

            await _passwordWalletContext.SaveChangesAsync(cancellationToken);

            return(new Status
            {
                Success = true,
                Messege = "Added new password"
            });
        }