Пример #1
0
        public async Task <TriggerResult> CheckLinkedSecurityUser(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            foreach (var entity in entities)
            {
                entity.Name = entity.FirstName + " " + entity.LastName;
                SecurityUser user = await SecurityUser.SelectByKey(entity.Id);

                if (user == null)
                {
                    user = new SecurityUser()
                    {
                        Id    = entity.Id,
                        Name  = entity.Name,
                        Email = entity.Email
                    };
                    await user.ApplyAsync();
                }
                else
                {
                    if (user.Name != entity.Name || user.Email != entity.Email)
                    {
                        user.StartTracking();
                        user.Name  = entity.Name;
                        user.Email = entity.Email;
                        await user.ApplyAsync();
                    }
                }

                await EmployeeBusiness.CheckDefaultRole(user.Id, "Users");
            }
            return(TriggerResult.Success());
        }
Пример #2
0
        private async Task <SecurityUser> CreateDwUser(User user)
        {
            var dwuser = new SecurityUser {
                Id = Guid.NewGuid(), Name = DwUserName(user)
            };
            await SecurityUser.ApplyAsync(dwuser);

            user.WorkflowUserId = dwuser.Id;
            await UserRepository.UpdateAsync(user);

            return(dwuser);
        }
Пример #3
0
        public async static Task Registration(Guid key, string domainLogin, string login, string password)
        {
            var invite = await InvitationLetter.SelectByKey(key);

            if (invite == null)
            {
                throw new Exception("The invitation key is incorrect!");
            }

            if (invite.DateExpired < DateTime.Now)
            {
                throw new Exception("The invitation key is expired!");
            }

            var employee = await Employee.SelectByKey(invite.EmployeeId);

            if (employee == null)
            {
                throw new Exception("The employee is not found!");
            }

            var su = await SecurityUser.SelectByKey(invite.EmployeeId);

            if (su == null)
            {
                su = new SecurityUser()
                {
                    Id    = employee.Id,
                    Name  = employee.Name,
                    Email = employee.Email
                };
                await su.ApplyAsync();
            }

            await CheckDefaultRole(employee.Id, "Users");

            var credentials = await SecurityUser.GetCredentialByUserId(su.Id);

            var containerCredential = new ObservableEntityContainer(credentials.Select(c => c.AsDynamicEntity), SecurityCredential.Model);

            containerCredential.RemoveAll();

            if (!string.IsNullOrEmpty(domainLogin))
            {
                var domainCredential = new SecurityCredential()
                {
                    Id                 = Guid.NewGuid(),
                    SecurityUserId     = su.Id,
                    Login              = domainLogin,
                    AuthenticationType = 1
                };
                containerCredential.Merge(new List <dynamic>()
                {
                    domainCredential.AsDynamicEntity
                });
            }

            if (!string.IsNullOrEmpty(login) && !string.IsNullOrEmpty(password))
            {
                var passwordSalt = HashHelper.GenerateSalt();
                var passwordHash = HashHelper.GenerateStringHash(password, passwordSalt);

                var customCredential = new SecurityCredential()
                {
                    Id                 = Guid.NewGuid(),
                    SecurityUserId     = su.Id,
                    Login              = login,
                    PasswordHash       = passwordHash,
                    PasswordSalt       = passwordSalt,
                    AuthenticationType = 0
                };
                containerCredential.Merge(new List <dynamic>()
                {
                    customCredential.AsDynamicEntity
                });
            }

            await containerCredential.ApplyAsync();

            await InvitationLetter.DeleteAsync(new Guid[] { key });
        }