/// <summary> /// Get the user's profile. /// </summary> /// <returns></returns> public DataTransfer.OAuth2UserIdentity GetUserIdentity() { DataTransfer.OAuth2UserIdentity value = UnitOfWork.Execute <DataTransfer.OAuth2UserIdentity>(() => { IOAuth2AuthorizationStoreAgent agent = DependencyInjection.Get <IOAuth2AuthorizationStoreAgent>(); Domain.Entity.OAuth2UserIdentity entity = agent.GetUserIdentity(Thread.CurrentPrincipal.Identity.Name); var _value = entity.ToDataTransferValue(); return(_value); }); return(value); }
public static DataTransfer.OAuth2UserIdentity ToDataTransferValue(this Domain.Entity.OAuth2UserIdentity entity, params PropertyDirective[] directives) { DataTransfer.OAuth2UserIdentity value = new DataTransfer.OAuth2UserIdentity { ID = entity.ID, User = entity.User.ToDataTransferValue(), Identity = entity.Identity.ToDataTransferValue(), __references = entity.__references, __extensions = entity.__extensions }; return(value); }
/// <summary> /// Sign up a new <see cref="OAuth2User"/> account. /// </summary> /// <param name="user">The <see cref="OAuth2User"/> data transfer object.</param> /// <returns>The registered <see cref="OAuth2User"/> account.</returns> public DataTransfer.OAuth2UserIdentity SignUpUser(OAuth2UserIdentity userIdentity) { DataTransfer.OAuth2UserIdentity value = UnitOfWork.Execute <DataTransfer.OAuth2UserIdentity>(() => { IOAuth2AuthorizationStoreAgent agent = DependencyInjection.Get <IOAuth2AuthorizationStoreAgent>(); Domain.Entity.OAuth2UserIdentity _userIdentity = userIdentity.ToEntity(); Domain.Entity.OAuth2UserIdentity entity = agent.SignUpUser(_userIdentity); DataTransfer.OAuth2UserIdentity _value = entity.ToDataTransferValue(); return(_value); }); return(value); }
public static Domain.Entity.OAuth2UserIdentity Merge(Domain.Entity.OAuth2UserIdentity entity, dynamic data) { Func <ExpandoObject> _data = () => data; // Project the properties. entity .Project(x => x.ID, _data) .Project(x => x.User, _data) .Project(x => x.Identity, _data) .Project(x => x.CreationTimestamp, _data, () => DateTime.Parse(data.CreationTimestamp)) .Project(x => x.ValidFrom, _data, () => DateTime.Parse(data.ValidFrom)) .Project(x => x.ValidUntil, _data, () => DateTime.Parse(data.ValidUntil)) ; return(entity); }
public static Domain.Entity.OAuth2UserIdentity ToEntity(this DataTransfer.OAuth2UserIdentity value) { Domain.Entity.OAuth2UserIdentity entity = null; if (!value.IsDefault()) { entity = new Domain.Entity.OAuth2UserIdentity { ID = value.ID, User = value.User.ToEntity(), Identity = value.Identity.ToEntity(), __references = value.__references, __extensions = value.__extensions }; } return entity; }
public static Domain.Entity.OAuth2UserIdentity ToEntity(this DataTransfer.OAuth2UserIdentity value) { Domain.Entity.OAuth2UserIdentity entity = null; if (!value.IsDefault()) { entity = new Domain.Entity.OAuth2UserIdentity { ID = value.ID, User = value.User.ToEntity(), Identity = value.Identity.ToEntity(), __references = value.__references, __extensions = value.__extensions }; } return(entity); }
public OAuth2UserIdentity SignUpUser(OAuth2UserIdentity entity) { using (IEntityContext context = DependencyInjection.Get<IEntityContext>()) { using (IOAuth2UserRepository repository = DependencyInjection.Get<IOAuth2UserRepository>(InjectionParameter.Create("context", context))) { IList<OAuth2Scope> scopes = repository.Context.Query<OAuth2Scope>() .Where(x => x.Code == "application.role.user.default") .List(); bool isValidIdentifier = this.IsValidEmail(entity.User.Identifier); if (isValidIdentifier) { OAuth2User user = new OAuth2User(); user.ID = Guid.NewGuid(); user.Identifier = entity.User.Identifier; user.Password = entity.User.Password; user.CreationTimestamp = DateTime.UtcNow; user.ValidFrom = DateTime.UtcNow; user.ValidUntil = new DateTime(DateTime.Parse("2100-01-01").Ticks, DateTimeKind.Utc); repository.Context.AddOrUpdate(user); Identity identity = new Identity(); identity.ID = Guid.NewGuid(); identity.FirstName = entity.Identity.FirstName; identity.Name = entity.Identity.Name; identity.Locale = entity.Identity.Locale; repository.Context.AddOrUpdate(identity); OAuth2UserScope userScope = new OAuth2UserScope(); userScope.ID = Guid.NewGuid(); userScope.Scope = scopes.Single(); userScope.User = user; userScope.CreationTimestamp = DateTime.UtcNow; userScope.ValidFrom = DateTime.UtcNow; userScope.ValidUntil = new DateTime(DateTime.Parse("2100-01-01").Ticks, DateTimeKind.Utc); repository.Context.AddOrUpdate(userScope); OAuth2UserIdentity userIdentity = new OAuth2UserIdentity(); userIdentity.ID = Guid.NewGuid(); userIdentity.User = user; userIdentity.Identity = identity; userIdentity.CreationTimestamp = DateTime.UtcNow; userIdentity.ValidFrom = DateTime.UtcNow; userIdentity.ValidUntil = new DateTime(DateTime.Parse("2100-01-01").Ticks, DateTimeKind.Utc); repository.Context.AddOrUpdate(userIdentity); } else { throw new Exception("Invalid e-mail address."); } } context.Commit(); } Domain.Entity.OAuth2UserIdentity _entity = this.GetUserIdentity(entity.User.Identifier); return _entity; }