Esempio n. 1
0
        /// <summary>
        /// 根据UserName获取KoalaBlogIdentityObject
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task<KoalaBlogIdentityObject> GetIdentityObjectAsync()
        {
            using (KoalaBlogDbContext dbContext = new KoalaBlogDbContext())
            {
                UserAccountXPersonHandler uaxpHandler = new UserAccountXPersonHandler(dbContext);

                if(CurrentThreadIdentityObject != null)
                {
                    //1. 根据用户名获取UserAccountXPerson对象。
                    UserAccountXPerson uaxp = await uaxpHandler.LoadByUserNameAsync(CurrentThreadIdentityObject.UserName);

                    if (uaxp != null)
                    {
                        KoalaBlogIdentityObject identityObject = new KoalaBlogIdentityObject();

                        if (uaxp.UserAccount != null)
                        {
                            identityObject.UserID = uaxp.UserAccount.ID;
                            identityObject.UserName = uaxp.UserAccount.UserName;
                            identityObject.Email = uaxp.UserAccount.Email;
                            identityObject.Status = uaxp.UserAccount.Status;
                        }
                        if (uaxp.Person != null)
                        {
                            AvatarHandler avatarHandler = new AvatarHandler(dbContext);

                            Avatar avatar = await avatarHandler.GetActiveAvatarByPersonId(uaxp.Person.ID);

                            identityObject.PersonID = uaxp.Person.ID;
                            identityObject.PersonNickName = uaxp.Person.NickName;
                            identityObject.Introduction = uaxp.Person.Introduction;

                            if (avatar != null)
                            {
                                identityObject.AvatarUrl = avatar.AvatarPath;
                            }
                        }

                        return identityObject;
                    }
                    else
                    {
                        UserAccountHandler uaHandler = new UserAccountHandler(dbContext);

                        //2. 如果UserAccountXPerson对象为空,意味着可能是用户注册还没完成,则根据用户名获取UserAccount对象,赋值IdentityObject通用Property。
                        UserAccount userAccount = await uaHandler.GetByUserNameAsync(CurrentThreadIdentityObject.UserName);

                        if (userAccount != null)
                        {
                            KoalaBlogIdentityObject identityObject = new KoalaBlogIdentityObject()
                            {
                                UserID = userAccount.ID,
                                UserName = userAccount.UserName,
                                Email = userAccount.Email,
                                Status = userAccount.Status
                            };
                            return identityObject;
                        }
                    }
                }     

                return null;
            }
        }