Exemplo n.º 1
0
        public async static Task <Dictionary <string, string> > GenerateInvitation(Guid employeeId)
        {
            Employee emp = await Employee.SelectByKey(employeeId);

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

            var date = DateTime.Now;
            InvitationLetter letter = new InvitationLetter()
            {
                Id          = Guid.NewGuid(),
                EmployeeId  = employeeId,
                Date        = date,
                DateExpired = date.AddDays(5)
            };

            await letter.ApplyAsync();

            var parameters = new Dictionary <string, string>();

            parameters.Add("Name", emp.Name);
            parameters.Add("Email", emp.Email);
            parameters.Add("Id", emp.Id.ToString());
            parameters.Add("Key", letter.Id.ToString());

            return(parameters);
        }
Exemplo n.º 2
0
        private TryAsync <InvitationAcknowledgement> SendEmail(InvitationLetter letter)
        => async() =>
        {
            var emialSender = _client.GetGrain <IEmailSender>(0);
            await emialSender.SendEmailAsync(letter.Letter);

            return(new InvitationAcknowledgement(Guid.NewGuid().ToString()));
        };
Exemplo n.º 3
0
        private TryAsync <AcknowledgementSent> SendEmail(InvitationLetter letter)
        => async() =>
        {
            var emailSender = _client.GetGrain <IEmailSender>(0);
            await emailSender.SendEmailAsync(letter.Letter);

            return(new AcknowledgementSent(1, Guid.NewGuid(), letter));
        };
Exemplo n.º 4
0
        private InvitationAcknowledgement SendEmailSynced(InvitationLetter letter)
        {
            var emailSender = _client.GetGrain <IEmailSender>(0);

            emailSender.SendEmailSync(letter.Letter);
            Task.WaitAll();
            return(new InvitationAcknowledgement(Guid.NewGuid().ToString()));
        }
Exemplo n.º 5
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 });
        }