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); }
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); }