Esempio n. 1
0
        public async Task <Execute <TicketEntity> > SignUpAsync(SignUpEntity signUp)
        {
            var result = new Execute <TicketEntity>();

            if (!await ValidateSignUp.IsSatisfiedByAsync(signUp, result))
            {
                return(result);
            }

            var(person, user, provider) = await CastNewUser(signUp);

            using (var db = new Context.XCommonDbContext())
            {
                using (var transaction = await db.Database.BeginTransactionAsync())
                {
                    result.AddMessage(await PeopleBusiness.SaveAsync(person, db));
                    result.AddMessage(await UsersBusiness.SaveAsync(user, db));
                    result.AddMessage(await UsersProvidersBusiness.SaveAsync(provider, db));

                    if (!result.HasErro)
                    {
                        transaction.Commit();
                    }
                }
            }

            if (!result.HasErro)
            {
                result.Entity = new TicketEntity
                {
                    Culture = person.Culture,
                    Key     = person.IdPerson,
                    Name    = person.Name,
                    Roles   = await GetUserRolesAsync(user)
                };
            }

            return(result);
        }
Esempio n. 2
0
        public virtual async Task <Execute <TicketEntity> > SignInAsync(SignInEntity signIn)
        {
            var result = new Execute <TicketEntity>();

            if (!await ValidateSignIn.IsSatisfiedByAsync(signIn, result))
            {
                return(result);
            }

            var person = await PeopleBusiness.GetFirstByFilterAsync(new PeopleFilter { Email = signIn.User });

            if (person == null)
            {
                result.AddMessage(ExecuteMessageType.Error, Resources.Authentication.InvalidUserPassword);
                return(result);
            }

            var user = await UsersBusiness.GetByKeyAsync(person.IdPerson);

            if (user == null)
            {
                result.AddMessage(ExecuteMessageType.Error, Resources.Authentication.InvalidUserPassword);
                return(result);
            }

            if (signIn.Provider == ProviderType.Local)
            {
                if (!await VerifyPasswordHashAsync(user, signIn.Password))
                {
                    result.AddMessage(ExecuteMessageType.Error, Resources.Authentication.InvalidUserPassword);
                    return(result);
                }

                result.Entity = new TicketEntity
                {
                    Culture = person.Culture,
                    Key     = person.IdPerson,
                    Name    = person.Name,
                    Roles   = await GetUserRolesAsync(user)
                };

                await SetTicketCustomValuesAsync(result.Entity);

                return(result);
            }

            var provider = await UsersProvidersBusiness.GetFirstByFilterAsync(new UsersProvidersFilter { IdUser = person.IdPerson, Provider = signIn.Provider });

            if (provider == null)
            {
                result.AddMessage(ExecuteMessageType.Error, Resources.Authentication.InvalidUserPassword);
                return(result);
            }

            result.Entity = new TicketEntity
            {
                Culture = person.Culture,
                Key     = person.IdPerson,
                Name    = person.Name,
                Roles   = await GetUserRolesAsync(user)
            };

            await SetTicketCustomValuesAsync(result.Entity);

            return(result);
        }