Exemplo n.º 1
0
 private string GetCurrentUserToken()
 {
     if (!User.Identity.IsAuthenticated)
         return null;
     Models.FoursquareUserContext fsqDBContext = new FoursquareUserContext();
     Models.FoursquareUserModel um = fsqDBContext.FoursquareUsers.Find(Convert.ToInt32(User.Identity.Name));
     if (um != null)
         return um.Token;
     return null;
 }
Exemplo n.º 2
0
 //
 // GET: /Profile/
 public NameValueCollection GetProfileInfo(int targetId)
 {
     string token = GetCurrentUserToken();
     Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(token);
     Profile pf = FSQOAuth.GetProfileInfo(targetId);
     Models.FoursquareUserContext db = new FoursquareUserContext();
     int userID = FSQOAuth.GetUserId();
     FoursquareUserModel um = db.FoursquareUsers.Find(userID);
     NameValueCollection nv = pf.getInfo(true);
     nv["isPremium"] = um.IsPremium.ToString();
     return nv;
 }
Exemplo n.º 3
0
        public static bool ValidateAuthData(int userId, string token)
        {
            FoursquareUserContext dbContent = new FoursquareUserContext();
            FoursquareUserModel user = dbContent.FoursquareUsers.Find(userId);

            if (user == null)
                return false;

            if (user.FoursquareUserId == userId && token == user.Token)
                return true;
            return false;
        }
Exemplo n.º 4
0
        public Profile GetProfile(string userId, string token, string targetId)
        {
            int uId = Convert.ToInt32(userId);
            int tId = Convert.ToInt32(targetId);

            if (AuthService.ValidateAuthData(uId, token))
            {
                FoursquareUserContext dbContext = new FoursquareUserContext();
                IMessageRepository repository = new MessageRepository(dbContext);
                FoursquareOAuth fsqOAuth = new FoursquareOAuth(token);
                if (fsqOAuth.CheckForFriendship(tId))
                {
                    Profile res = fsqOAuth.GetProfileInfo(tId);
                    return res;
                }

            }
            return null;
        }
Exemplo n.º 5
0
        public List<int> GetNearByUsers(int radius)
        {
            Models.FoursquareUserContext db = new FoursquareUserContext();

            List<string> venueList = GetNearbyVenues(radius);
            if (venueList == null)
            {
                return new List<int>();
            }
            List<int> res = new List<int>();
            int userId = GetUserId();
            foreach (string s in venueList)
            {
                IEnumerable<int> q = from o in db.FoursquareUsers
                                     where o.LastVenueID == s && o.FoursquareUserId != userId
                                     select o.FoursquareUserId;
                res.AddRange(q);
            }
            return res;
        }
        public ActionResult Authenticate()
        {
            Logic.FoursquareOAuth FSQOAuth = new Logic.FoursquareOAuth(null);
            if (Request["code"] == null)
            {
                return Redirect(FSQOAuth.GetAuthURL());
            }
            if (FSQOAuth.makeAuthentication(Request["code"]))
            {
                int userId = FSQOAuth.GetUserId();
                string lastVenue;
                try
                {
                     lastVenue = FSQOAuth.GetLastVenue();
                }
                catch (Exception e)
                {
                    lastVenue = null;
                }

                FoursquareUserContext fsqDBContext = new FoursquareUserContext();
                FoursquareUserModel curUser = fsqDBContext.FoursquareUsers.Find(userId);
                if (curUser != null)
                {
                    MembershipUser mUser = Membership.GetUser(curUser.UserGuid);
                    curUser.LastVenueID = lastVenue;
                    if (curUser.Token != FSQOAuth.Token)
                    {
                        curUser.Token = FSQOAuth.Token;
                    }
                    UpdateModel(curUser);
                    fsqDBContext.SaveChanges();
                    FormsAuthentication.SetAuthCookie(mUser.UserName, true);
                }
                else
                {
                    curUser = new FoursquareUserModel();
                    curUser.FoursquareUserId = userId;
                    curUser.Token = FSQOAuth.Token;
                    string password = Guid.NewGuid().ToString();

                    MembershipUser mUser;
                    try
                    {
                        mUser = Membership.CreateUser(userId.ToString(), password);
                    }
                    catch (Exception)
                    {
                        mUser = Membership.FindUsersByName(userId.ToString())[userId.ToString()];
                    }
                    curUser.UserGuid = (Guid)mUser.ProviderUserKey;
                    curUser.UserName = userId.ToString();
                    curUser.LastVenueID = lastVenue;
                    fsqDBContext.FoursquareUsers.Add(curUser);
                    fsqDBContext.SaveChanges();
                    FormsAuthentication.SetAuthCookie(curUser.UserName, true);
                }
            }

            return RedirectToAction("Index");
        }
 public ActionResult Login()
 {
     if (!User.Identity.IsAuthenticated)
         return RedirectToAction("Authenticate");
     Models.FoursquareUserContext fsqDBContext = new FoursquareUserContext();
     Models.FoursquareUserModel fsqUser = fsqDBContext.FoursquareUsers.Find(Convert.ToInt32(User.Identity.Name));
     Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(fsqUser.Token);
     try
     {
         FSQOAuth.GetUserId();
         return RedirectToAction("Index", "Foursquare");
     }
     catch (WebException)
     {
         return RedirectToAction("Authenticate");
     }
 }
        //
        // GET: /FoursquareLogin/
        public ActionResult Index()
        {
            Models.FoursquareUserContext fsqDBContext = new FoursquareUserContext();
            fsqDBContext.FoursquareUsers.Add(new FoursquareUserModel()
                {
                    FoursquareUserId = 1,
                    Token = "fafaf",
                    UserGuid = Guid.NewGuid(),
                    UserName = "******"
                });

            fsqDBContext.Messages.Add(new MessageModel()
                {
                    From = 1,
                    To = 1,
                    Message = "daf",
                    time = DateTime.Now
                });
            return RedirectToAction("Login");
        }
 public ActionResult AuthInfo()
 {
     if (!User.Identity.IsAuthenticated)
     {
         return RedirectToAction("Login");
     }
     FoursquareUserContext fsqDBContext = new FoursquareUserContext();
     FoursquareUserModel curUser = fsqDBContext.FoursquareUsers.Find(Convert.ToInt32(User.Identity.Name));
     if (curUser != null)
     {
         UserAuthInfo res = new UserAuthInfo(curUser.FoursquareUserId, curUser.Token);
         return Json(res, JsonRequestBehavior.AllowGet);
     }
     return null;
 }
Exemplo n.º 10
0
        public ActionResult NearbyVenues(int maxRadius)
        {
            if (!User.Identity.IsAuthenticated)
                return RedirectToAction("Index", "FoursquareLogin");

            FoursquareUserContext foursquareUserContext = new FoursquareUserContext();
            //TODO maybe change to premium warning notification
            int userId = Convert.ToInt32(User.Identity.Name);
            FoursquareUserModel user =
                foursquareUserContext.FoursquareUsers.
                First(x => x.FoursquareUserId == userId);

            int premiumRadius = Convert.ToInt32(ConfigurationManager.AppSettings["PremiumRadius"]);
            if (!user.IsPremium && premiumRadius < maxRadius)
                maxRadius = premiumRadius;

            string token = GetCurrentUserToken();
            logger.Debug("Got token " + token);
            Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(token);

            List<string> res = FSQOAuth.GetNearbyVenues(maxRadius);

            logger.Debug("Got venues " + res.Count);
            List<FoursquareOAuth.Venue> venues = new List<FoursquareOAuth.Venue>();
            if (res.Count == 0)
            {
                ViewBag.venues = null;
                return View();
            }
            try
            {
                foreach (var re in res)
                {
                    venues.Add(FSQOAuth.GetVenuesInfo(re));
                }
            }
            catch (Exception e)
            {
                logger.Error(e.Message);
            }
            logger.Debug("Got venues info");
            ViewBag.venues = venues;
            return View();
        }
Exemplo n.º 11
0
        public ActionResult NearbyUsers()
        {
            //TODO redirect to Friends
            if (!User.Identity.IsAuthenticated)
                return RedirectToAction("Index", "FoursquareLogin");
            string token = GetCurrentUserToken();
            Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(token);
            Models.FoursquareUserContext db = new FoursquareUserContext();
            IEnumerable<FoursquareUserModel> foursquareUsers = db.FoursquareUsers;
            foreach (var foursquareUserModel in foursquareUsers)
            {
                Logic.FoursquareOAuth tmp = new FoursquareOAuth(foursquareUserModel.Token);
                foursquareUserModel.LastVenueID = tmp.GetLastVenue();
                UpdateModel(foursquareUserModel);

                logger.Debug("Got last venue " + foursquareUserModel.FoursquareUserId);
            }
            db.SaveChanges();
            logger.Debug("Got all venues");

            List<int> res = FSQOAuth.GetNearByUsers(1000);
            logger.Debug("got nearby users");
            List<string> names = new List<string>();
            for (int i = 0; i < res.Count; ++i)
            {
                NameValueCollection tmp;
                if (res[i] != null)
                {
                    tmp = GetProfileInfo(res[i]);
                    names.Add(tmp["firstname"]);
                }
                else
                {
                    res.Remove(i);
                }
            }
            logger.Debug("got profile info");
            ViewBag.users = res;
            ViewBag.names = names;
            return View();
        }
Exemplo n.º 12
0
 public MessageRepository(FoursquareUserContext context)
 {
     this.context = context;
 }
Exemplo n.º 13
0
 public MessageRepository(FoursquareUserContext context)
 {
     this.context = context;
 }