Пример #1
0
        public LiveIdAccessTokenInfo getFreshToken(LiveIdAccessTokenInfo given)
        {
            //first let's see we have one in cache
            var account_info    = given.getAccountInfo();
            var result          = _cache.ContainsKey(account_info?.email) ? _cache[account_info.email] : given;
            var expiration_date = _expire.ContainsKey(account_info?.email) ? _expire[account_info.email] : DateTime.Now.AddMinutes(-1);

            if (expiration_date < DateTime.Now)
            {
                result = LiveIdAccessTokenInfo.Refresh(result.refresh_token);
                _cache[account_info.email]  = result;
                _expire[account_info.email] = DateTime.Now.AddMinutes(30);
            }
            return(result);
        }
Пример #2
0
        protected override ActionResult <User> ActionImplemetation()
        {
            if (string.IsNullOrEmpty(input))
            {
                return new ActionResult <User> {
                           isSuccessfull = false, message = "code not given"
                }
            }
            ;

            var liveIDconf = this.getGlobalObject <IConfigurationProvider>().getConfiguration <LiveIDConfiguration>();
            LiveIdAccessTokenInfo access_token_info = LiveIdAccessTokenInfo.Aquire(input, liveIDconf);

            LiveIDAccountInfo account_info = access_token_info.getAccountInfo();

            //live id cookies
            var  cd   = this.getGlobalObject <IContentDispatcher>();
            User user = cd.GetAllByFilter <User>(x => x.email == account_info.email).FirstOrDefault();

            //first time in this instance
            if (user == null)
            {
                if (!liveIDconf.allow_new_users)
                {
                    return(ActionResultTemplates <User> .UnAuthorized);
                }

                var cc = this.getGlobalObject <IGlobalContentCreator>();

                user = cc.getNewContent <User>();
            }
            user.username = account_info.preferred_username;
            user.fullname = account_info.name;
            user.email    = account_info.email;
            cd.Add(user);

            var session = this.getGlobalObject <MysterySession>();

            session.authenticated_user = user;

            return(new ActionResult <User>(user));
        }