Beispiel #1
0
        public static CurrentUser InitializationCurrentUser(User user, OAuthSource source)
        {
            var currentUser = CurrentContext.GetCurrentUser();

            currentUser.UserId = user.Id;
            currentUser.UserName = user.UserName;
            currentUser.Source = source;

            CurrentContext.SetUser(currentUser);

            return currentUser;
        }
Beispiel #2
0
        /// <summary>
        /// 根据githubUser.id获取userId,若首次访问,则新建OAuthAccount记录和User记录
        /// </summary>
        /// <param name="githubUser"></param>
        /// <returns></returns>
        private User GetOAuthUser(GithubUserInfoResult githubUser)
        {
            using (UnitOfWork)
            {
                User user = null;
                var queryManage = new QueryManage(UnitOfWork);
                var commonQuery = new CommonQuery(queryManage);
                var userRepo = new UserRepository(UnitOfWork);
                var oauthAccountRepo = new BaseRepository<OAuthAccount>(UnitOfWork);

                const string query = @"SELECT *
                                        FROM oauthaccount
                                        WHERE OAuthCode = @OAuthCode
	                                        AND Source = @Source";
                var oauthAccount = queryManage.GetList<OAuthAccount>(query, new { OAuthCode = githubUser.id, Source = OAuthSource.Github })
                    .FirstOrDefault();

                if (oauthAccount == null)
                {
                    user = new User
                    {
                        UserName = githubUser.login,
                        Enable = true,
                        CreatedTime = DateTime.Now
                    };
                    user.Id = userRepo.CreateWithIdentity(user);

                    oauthAccountRepo.Create(new OAuthAccount
                    {
                        OAuthCode = githubUser.id.ToString(CultureInfo.InvariantCulture),
                        Source = OAuthSource.Github,
                        UserId = user.Id,
                        CreatedTime = DateTime.Now
                    });
                }
                else
                {
                    user = commonQuery.GetUser(oauthAccount.UserId);
                }

                return user;
            }
        }