コード例 #1
0
        protected override async Task OnInitializedAsync()
        {
            try
            {
                EmployeeService = ScopedServices.GetRequiredService <IEmployeeService>();
                TemplateService = ScopedServices.GetRequiredService <ITemplateService>();
                LdapService     = ScopedServices.GetRequiredService <ILdapService>();
                RemoteDeviceConnectionsService = ScopedServices.GetRequiredService <IRemoteDeviceConnectionsService>();

                Employee = await EmployeeService.GetEmployeeByIdAsync(EmployeeId);

                Templates = await TemplateService.GetTemplatesAsync();

                PersonalAccount = new AccountAddModel()
                {
                    EmployeeId = EmployeeId
                };

                SetInitialized();
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                await ToastService.ShowToastAsync(ex.Message, ToastType.Error);
                await ModalDialogCancel();
            }
        }
コード例 #2
0
        public async Task <ActionResult <Account> > CreateAccount(CreateAccountDto accountDto)
        {
            Account createdAccount;

            try
            {
                var personalAccount = new AccountAddModel()
                {
                    Name       = accountDto.Name,
                    Urls       = accountDto.Urls,
                    Apps       = accountDto.Apps,
                    LoginType  = accountDto.LoginType,
                    Login      = accountDto.Login,
                    EmployeeId = accountDto.EmployeeId,
                    Password   = accountDto.Password,
                    OtpSecret  = accountDto.OtpSecret
                };

                createdAccount = await _employeeService.CreatePersonalAccountAsync(personalAccount);

                _remoteDeviceConnectionsService.StartUpdateHardwareVaultAccounts(await _employeeService.GetEmployeeVaultIdsAsync(createdAccount.EmployeeId));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(StatusCode(500, new { error = ex.Message }));
            }

            return(CreatedAtAction("GetAccountById", new { id = createdAccount.Id }, createdAccount));
        }
コード例 #3
0
 public ActionResult AddForAjax(AccountAddModel model)
 {
     if (ModelState.IsValid)
     {
         if (model.Password != model.ConfirmPassword)
         {
             return(Json(new ServiceResult("密码输入").IsFailed()));
         }
         SYS_User user = new SYS_User()
         {
             SystemUserId = Guid.NewGuid().ToString(),
             CreateTime   = DateTime.Now,
             Email        = model.Email,
             Mobile       = model.Mobile,
             Password     = AuthorizeHelper.GetEncPassword(model.Password),
             RealName     = model.RealName,
             UserName     = model.UserName,
             UserType     = model.UserType,
             Status       = model.Status
         };
         return(Json(this.accountService.Add(user)));
     }
     else
     {
         return(Json(new ServiceResult(GetModelStateMessage()).IsFailed()));
     }
 }
コード例 #4
0
        public async Task <IActionResult> Create(AccountAddModel account)
        {
            ResultLog resultLog = new ResultLog();

            if (ModelState.IsValid)
            {
                if (!await _redisService.IsExistKey(accountTableKey, account.AccountNumber))
                {
                    //ToDo: Use AutoMapper and DTO
                    resultLog.IsError = !await _redisService.CreateHashSetDataAsync(accountTableKey, account.AccountNumber,
                                                                                    new Account
                    {
                        AccountNumber = account.AccountNumber,
                        Balance       = Math.Round(account.Balance, 2), //limited 2 digits
                        CurrencyCode  = account.CurrencyCode.ToString()
                    });

                    if (resultLog.IsError)
                    {
                        return(StatusCode((int)Enums.Enums.StatusCode.ISSUER_OR_SWITCH_INOPERATIVE, resultLog));
                    }
                    return(StatusCode((int)Enums.Enums.StatusCode.CREATED, resultLog));
                }
                else
                {
                    return(StatusCode((int)Enums.Enums.StatusCode.CONFLICT,
                                      ActionResultHelper.CreateActionResultJson(Enums.Enums.StatusCode.CONFLICT, "AccountNumber should be unique")));
                }
            }
            return(ValidationProblem());
        }
コード例 #5
0
        public async Task <ActionResult> Add(WebUser user, AccountAddModel model)
        {
            if (ModelState.IsValid)
            {
                var account = new Account()
                {
                    AccountName = model.AccountName,
                    Cash        = model.Cash,
                    Use         = model.Use,
                    UserId      = user.Id
                };

                try
                {
                    await _accountService.CreateAsync(account);

                    return(RedirectToAction("Index"));
                }
                catch (ServiceException e)
                {
                    throw new WebUiException($"Ошибка в контроллере {nameof(AccountController)} в методе {nameof(Add)}", e);
                }
            }
            return(PartialView(model));
        }
コード例 #6
0
ファイル: AccountService.cs プロジェクト: yh-test/NetModular
        public async Task <IResultModel <Guid> > Add(AccountAddModel model, IUnitOfWork uow = null)
        {
            var result = new ResultModel <Guid>();

            var account = _mapper.Map <AccountEntity>(model);

            var exists = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            //设置默认密码
            if (account.Password.IsNull())
            {
                var config = _configProvider.Get <AdminConfig>();
                account.Password = config.DefaultPassword.NotNull() ? config.DefaultPassword : "******";
            }

            account.Password = _passwordHandler.Encrypt(account.UserName, account.Password);

            //如果uow参数为空,需要自动处理工作单元
            var noUow = uow == null;

            if (noUow)
            {
                uow = _dbContext.NewUnitOfWork();
            }

            if (await _accountRepository.AddAsync(account, uow))
            {
                if (model.Roles != null && model.Roles.Any())
                {
                    var accountRoleList = model.Roles.Select(m => new AccountRoleEntity {
                        AccountId = account.Id, RoleId = m
                    }).ToList();
                    if (await _accountRoleRepository.AddAsync(accountRoleList, uow))
                    {
                        if (noUow)
                        {
                            uow.Commit();
                        }

                        return(result.Success(account.Id));
                    }
                }
                else
                {
                    if (noUow)
                    {
                        uow.Commit();
                    }

                    return(result.Success(account.Id));
                }
            }

            return(result.Failed());
        }
コード例 #7
0
ファイル: EmployeeService.cs プロジェクト: EugeneRymarev/HES
        public async Task <Account> CreatePersonalAccountAsync(AccountAddModel personalAccount)
        {
            if (personalAccount == null)
            {
                throw new ArgumentNullException(nameof(personalAccount));
            }

            _dataProtectionService.Validate();

            var account = new Account()
            {
                Id                      = Guid.NewGuid().ToString(),
                Name                    = personalAccount.Name,
                Urls                    = Validation.VerifyUrls(personalAccount.Urls),
                Apps                    = personalAccount.Apps,
                Login                   = await ValidateAccountNameAndLoginAsync(personalAccount.EmployeeId, personalAccount.Name, personalAccount.GetLogin()),
                AccountType             = AccountType.Personal,
                LoginType               = personalAccount.LoginType,
                CreatedAt               = DateTime.UtcNow,
                PasswordUpdatedAt       = DateTime.UtcNow,
                OtpUpdatedAt            = Validation.VerifyOtpSecret(personalAccount.OtpSecret) != null ? new DateTime?(DateTime.UtcNow) : null,
                Password                = _dataProtectionService.Encrypt(personalAccount.Password),
                OtpSecret               = _dataProtectionService.Encrypt(personalAccount.OtpSecret),
                UpdateInActiveDirectory = personalAccount.UpdateInActiveDirectory,
                EmployeeId              = personalAccount.EmployeeId,
                StorageId               = new StorageId().Data
            };

            Employee employee = await GetEmployeeByIdAsync(personalAccount.EmployeeId);

            List <HardwareVaultTask> tasks = new List <HardwareVaultTask>();

            foreach (var vault in employee.HardwareVaults)
            {
                tasks.Add(_hardwareVaultTaskService.GetAccountCreateTask(vault.Id, account.Id, account.Password, account.OtpSecret));
            }

            using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                await _accountService.AddAsync(account);
                await SetAsPrimaryAccountIfEmptyAsync(account.EmployeeId, account.Id);

                if (tasks.Count > 0)
                {
                    await _hardwareVaultTaskService.AddRangeTasksAsync(tasks);

                    await _hardwareVaultService.UpdateNeedSyncAsync(employee.HardwareVaults, true);
                }

                transactionScope.Complete();
            }

            return(account);
        }
コード例 #8
0
        public async Task <IResultModel <Guid> > Add(AccountAddModel model)
        {
            var result = new ResultModel <Guid>();

            var account = _mapper.Map <AccountEntity>(model);

            var exists = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            //默认未激活状态,用户首次登录激活
            account.Status = AccountStatus.Inactive;

            //设置默认密码
            if (account.Password.IsNull())
            {
                account.Password = DefaultPassword;
            }

            account.Password = EncryptPassword(account.UserName.ToLower(), account.Password);

            using (var tran = _accountRepository.BeginTransaction())
            {
                if (await _accountRepository.AddAsync(account, tran))
                {
                    if (model.Roles != null && model.Roles.Any())
                    {
                        var accountRoleList = model.Roles.Select(m => new AccountRoleEntity {
                            AccountId = account.Id, RoleId = m
                        }).ToList();
                        if (await _accountRoleRepository.AddAsync(accountRoleList, tran))
                        {
                            tran.Commit();
                            return(result.Success(account.Id));
                        }
                    }
                    else
                    {
                        tran.Commit();
                        return(result.Success(account.Id));
                    }
                }
            }

            return(result.Failed());
        }
コード例 #9
0
        public async Task AddModelStateValidReturnsRedirectToIndex()
        {
            var accountViewModel = new AccountAddModel()
            {
                AccountName = "Acc1"
            };
            var target = new AccountController(_mockAccountService.Object);

            var result = await target.Add(new WebUser()
            {
                Id = "1"
            }, accountViewModel);

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        }
コード例 #10
0
        public void Add_ValidObjectPassed_ReturnsCreatedResponse()
        {
            // Arrange
            var newAccount = new AccountAddModel
            {
                AccountNumber = 88,
                Balance       = 100,
                CurrencyCode  = Enums.CurrencyCode.TRY
            };
            // Act
            var createdResponse = _accountsController.Create(newAccount).Result;
            // Assert
            var objectResult = Assert.IsType <ObjectResult>(createdResponse);

            Assert.Equal(201, objectResult.StatusCode);
        }
コード例 #11
0
        public void Add_AlreadyExistObjectPassed_ReturnsConflictRequest()
        {
            // Arrange
            var newAccount = new AccountAddModel
            {
                AccountNumber = 99,
                Balance       = 10,
                CurrencyCode  = Enums.CurrencyCode.TRY
            };
            // Act
            var conflictResponse = _accountsController.Create(newAccount).Result;
            // Assert
            var objectResult = Assert.IsType <ObjectResult>(conflictResponse);

            Assert.Equal(409, objectResult.StatusCode);
        }
コード例 #12
0
ファイル: UserService.cs プロジェクト: ym9288/NetModular
        public async Task <IResultModel> Add(UserAddModel model)
        {
            var entity       = _mapper.Map <UserEntity>(model);
            var maxJobNumber = await _repository.GetMaxJobNumber();

            if (maxJobNumber < 1)
            {
                maxJobNumber = _options.UserInitialJobNumber;
            }

            if (maxJobNumber < 1)
            {
                //д╛хо100000
                maxJobNumber = 100000;
            }

            entity.JobNo = maxJobNumber + 1;

            var account = new AccountAddModel
            {
                Type     = 1,
                UserName = model.UserName,
                Phone    = model.Phone,
                Email    = model.Email,
                Name     = model.Name,
                Roles    = model.Roles,
                Password = model.Password
            };

            _adminUow.BeginTransaction();
            var result = await _accountService.Add(account);

            if (result.Successful)
            {
                entity.AccountId = result.Data;
                _uow.BeginTransaction();
                if (await _repository.AddAsync(entity))
                {
                    _adminUow.Commit();
                    _uow.Commit();
                    return(ResultModel.Success());
                }
            }

            return(result);
        }
コード例 #13
0
        public async Task Cannot_Add_Invalid_Account()
        {
            var accountViewModel = new AccountAddModel()
            {
                AccountName = "Acc1"
            };
            var target = new AccountController(null);

            target.ModelState.AddModelError("error", "error");

            var result = await target.Add(new WebUser()
            {
                Id = "1"
            }, accountViewModel);

            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
コード例 #14
0
ファイル: AccountService.cs プロジェクト: csu-xiao-an/FinAPP
        public async Task <Account> AddAccount(AccountAddModel account)
        {
            Account exitedAccount = await unitOfWork.AccountRepository.SingleOrDefaultAsync(a => a.Name == account.Name && a.UserId == account.UserId);

            if (exitedAccount == null)
            {
                await unitOfWork.AccountRepository.AddAsync(mapper.Map <AccountAddModel, Account>(account));

                await unitOfWork.Complete();

                return(null);
            }
            else
            {
                return(exitedAccount);
            }
        }
コード例 #15
0
        public async Task <IResultModel> Add(AccountAddModel model)
        {
            var account = _mapper.Map <Account>(model);

            var exists = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            //默认未激活状态,用户首次登录激活
            account.Status = AccountStatus.Inactive;

            //设置默认密码
            if (account.Password.IsNull())
            {
                account.Password = EncryptPassword(account.UserName.ToLower(), DefaultPassword);
            }

            _uow.BeginTransaction();
            var result = await _accountRepository.AddAsync(account);

            if (result)
            {
                if (model.Roles != null && model.Roles.Any())
                {
                    var accountRoleList = model.Roles.Select(m => new AccountRole {
                        AccountId = account.Id, RoleId = m
                    }).ToList();
                    if (await _accountRoleRepository.AddAsync(accountRoleList))
                    {
                        _uow.Commit();
                        return(ResultModel.Success());
                    }
                }
                else
                {
                    _uow.Commit();
                    return(ResultModel.Success());
                }
            }

            return(ResultModel.Failed());
        }
コード例 #16
0
        public async Task <IResultModel <Guid> > Add(AccountAddModel model)
        {
            var result = new ResultModel <Guid>();

            var account = _mapper.Map <AccountEntity>(model);
            var exists  = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            //设置默认密码
            if (account.LoginPwd.IsNull())
            {
                account.LoginPwd = "123456";
            }
            account.PassSalt = new StringHelper().GenerateRandom(8);
            account.LoginPwd = Zoomtel.Utils.Helpers.Encrypt.DESEncrypt(account.LoginPwd, account.PassSalt);

            _accountRepository.BeginTrans();
            if (await _accountRepository.InsertAsync(account) > 0)
            {
                //插入角色绑定信息
                if (model.RoleList != null && model.RoleList.Count > 0)
                {
                    var accountRoleList = model.RoleList.Select(m => new AccountRoleEntity {
                        Uid = account.Uid, RoleId = m
                    }).ToList();
                    if (await _accountRoleRepository.InsertAsync(accountRoleList) > 0)
                    {
                        _accountRepository.Commit();
                        return(result.Success(account.Uid));
                    }
                }
                else
                {
                    _accountRepository.Commit();
                    return(result.Success(account.Uid));
                }
            }

            return(result.Failed());
        }
コード例 #17
0
        protected override async Task OnInitializedAsync()
        {
            try
            {
                EmployeeService                = ScopedServices.GetRequiredService <IEmployeeService>();
                HardwareVaultService           = ScopedServices.GetRequiredService <IHardwareVaultService>();
                OrgStructureService            = ScopedServices.GetRequiredService <IOrgStructureService>();
                SharedAccountService           = ScopedServices.GetRequiredService <ISharedAccountService>();
                RemoteDeviceConnectionsService = ScopedServices.GetRequiredService <IRemoteDeviceConnectionsService>();

                Companies = await OrgStructureService.GetCompaniesAsync();

                Departments = new List <Department>();
                Positions   = await OrgStructureService.GetPositionsAsync();

                SharedAccounts = await SharedAccountService.GetAllSharedAccountsAsync();

                SharedAccountId = SharedAccounts.FirstOrDefault()?.Id;

                await LoadHardwareVaultsAsync();

                Employee = new Employee()
                {
                    Id = Guid.NewGuid().ToString()
                };
                EmployeeContext = new EditContext(Employee);
                PersonalAccount = new AccountAddModel {
                    EmployeeId = Employee.Id, LoginType = LoginType.Local
                };
                PersonalAccountContext = new EditContext(PersonalAccount);

                SetInitialized();
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                SetLoadFailed(ex.Message);
                await ToastService.ShowToastAsync(ex.Message, ToastType.Error);

                await ModalDialogService.CloseAsync();
            }
        }
コード例 #18
0
        public async Task <IActionResult> Add([FromBody] AccountAddModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorList()));
            }
            if (await _userManager.Users.AnyAsync(x => x.UserName.Equals(model.Email)))
            {
                return(BadRequest("User already exists"));
            }

            var user = new AppUser
            {
                UserName       = model.Email,
                FirstName      = model.FirstName,
                LastName       = model.LastName,
                Email          = model.Email,
                CreatedOn      = Utilities.Utility.GetDateTime(),
                Status         = Constants.RecordStatus.Active,
                EmailConfirmed = true,
                Role           = model.RoleId
            };

            try
            {
                IdentityResult identityResult = await _userManager.CreateAsync(user, model.Password);

                var role = await _roleManager.FindByIdAsync(model.RoleId);

                identityResult = await _userManager.AddToRoleAsync(user, role.Name);

                return(Ok());
            }
            catch (Exception)
            {
                return(BadRequest("unable to add user"));
            }
        }
コード例 #19
0
        public async Task Consume(ConsumeContext <SubscriptionAdded> context)
        {
            var message = context.Message;

            var brokerId = message.SubscriptionId.ToString();

            // TODO: must be extracted to service layer
            var account = new AccountAddModel();

            account.BrokerId = brokerId;
            account.Name     = "Fee Account";
            var newAccount = await _accountsClient.Account.AddAsync(account);

            var settings = new Settings();

            settings.BrokerId     = message.SubscriptionId.ToString();
            settings.FeeAccountId = newAccount.Id;
            settings.FeeWalletId  = newAccount.Wallets.Single().Id;

            await _settingsService.AddAsync(settings);

            _logger.LogInformation("SubscriptionAdded command has been processed {@context}", message);
        }
コード例 #20
0
        public async Task <IResultModel> Add(EmployeeAddModel model)
        {
            if (model.Password.NotNull() && !model.Password.Equals(model.ConfirmPassword))
            {
                return(ResultModel.Failed("两次输入的密码不同"));
            }

            var entity = _mapper.Map <EmployeeEntity>(model);

            entity.JoinDate = entity.JoinDate.Date;

            var account = new AccountAddModel
            {
                Type     = AccountType.User,//使用User账户类型
                UserName = model.UserName,
                Name     = model.Name,
                Password = model.Password,
                IsLock   = true,
                Roles    = model.Roles,
                Status   = AccountStatus.Active
            };

            var result = await _accountService.Add(account);

            if (result.Successful)
            {
                entity.AccountId = result.Data;
                if (await _repository.AddAsync(entity))
                {
                    await _cacheHandler.RemoveAsync(CacheKeys.EMPLOYEE_TREE);

                    return(ResultModel.Success());
                }
            }

            return(result);
        }
コード例 #21
0
 public Task <IResultModel <Guid> > Add(AccountAddModel model)
 {
     return(_service.Add(model));
 }
コード例 #22
0
        public async Task <IResultModel <Guid> > Add(AccountAddModel model, IUnitOfWork uow = null)
        {
            var result = new ResultModel <Guid>();

            var account = _mapper.Map <AccountEntity>(model);

            var exists = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            //默认未激活状态,用户首次登录激活
            account.Status = AccountStatus.Inactive;

            //设置默认密码
            if (account.Password.IsNull())
            {
                account.Password = DefaultPassword;
            }

            account.Password = EncryptPassword(account.UserName, account.Password);

            //如果uow参数为空,需要自动处理工作单元
            var noUow = uow == null;

            if (noUow)
            {
                uow = _dbContext.NewUnitOfWork();
            }

            if (await _accountRepository.AddAsync(account, uow))
            {
                if (model.Roles != null && model.Roles.Any())
                {
                    var accountRoleList = model.Roles.Select(m => new AccountRoleEntity {
                        AccountId = account.Id, RoleId = m
                    }).ToList();
                    if (await _accountRoleRepository.AddAsync(accountRoleList, uow))
                    {
                        if (noUow)
                        {
                            uow.Commit();
                        }

                        return(result.Success(account.Id));
                    }
                }
                else
                {
                    if (noUow)
                    {
                        uow.Commit();
                    }

                    return(result.Success(account.Id));
                }
            }

            return(result.Failed());
        }
コード例 #23
0
        public EmployeeServiceTestingOptions(int employeeCount, int crudEmployeeId, int accountsEmployeeId)
        {
            EmployeesCount     = employeeCount;
            CrudEmployeeId     = $"{crudEmployeeId}";
            AccountsEmployeeId = $"{accountsEmployeeId}";

            NewAccountName = "New name";

            TestingEmployees = GetTestEmployees();

            DataLoadingOptions = new DataLoadingOptions <EmployeeFilter>()
            {
                Skip          = 0,
                Take          = EmployeesCount,
                SortDirection = ListSortDirection.Ascending,
                SortedColumn  = nameof(Employee.Id),
                SearchText    = string.Empty,
                Filter        = null
            };

            PersonalAccount = new AccountAddModel()
            {
                Name            = "stackoverflow",
                Urls            = "stackoverflow.com",
                Login           = "******",
                Password        = "******",
                ConfirmPassword = "******",
                EmployeeId      = AccountsEmployeeId
            };

            //WorkstationAccount = new WorkstationAccount()
            //{
            //    Name = "local",
            //    UserName = "******",
            //    Password = "******",
            //    ConfirmPassword = "******",
            //    EmployeeId = AccountsEmployeeId,
            //    Type = WorkstationAccountType.Local
            //};

            //WorkstationDomainAccount = new WorkstationDomain()
            //{
            //    Name = "domain",
            //    UserName = "******",
            //    Password = "******",
            //    ConfirmPassword = "******",
            //    EmployeeId = AccountsEmployeeId,
            //};

            //WorkstationMsAccount = new WorkstationAccount()
            //{
            //    Name = "ms",
            //    UserName = "******",
            //    Password = "******",
            //    ConfirmPassword = "******",
            //    EmployeeId = AccountsEmployeeId,
            //    Type = WorkstationAccountType.Microsoft
            //};

            //WorkstationAzureAccount = new WorkstationAccount()
            //{
            //    Name = "azure",
            //    UserName = "******",
            //    Password = "******",
            //    ConfirmPassword = "******",
            //    EmployeeId = AccountsEmployeeId,
            //    Type = WorkstationAccountType.AzureAD
            //};

            AccountsCount = 5;
        }
コード例 #24
0
        public async Task <IActionResult> AddAccount(AccountAddModel account)
        {
            var result = await accountService.AddAccount(account);

            return(result == null?Ok(new { message = "Adding account was successful" }) : (IActionResult)Conflict(new { message = "User already has account with this name" }));
        }