コード例 #1
0
ファイル: DataPortal.cs プロジェクト: petervyvey/membrane
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: DataPortal.cs プロジェクト: petervyvey/membrane
        /// <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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
        }
コード例 #7
0
		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;
		}