public bool TryGetAccessToken(out UserAccessToken userAccessToken)
        {
            var accessToken = _httpContext.Session[_sessionKeyName] as UserAccessToken;
            userAccessToken = accessToken;

            return accessToken != null;
        }
Beispiel #2
0
        public IEnumerable<Hug> GetHugs(UserAccessToken userAccessToken)
        {
            _logger.Info("Getting hugs for: " + userAccessToken.Email);
            var mongoHugs = _hugRepository.GetHugs(userAccessToken.Ticket).ToList();
            var hugs = Mapper.Map<IList<Service.Model.Hug>>(mongoHugs);

            return hugs;
        }
Beispiel #3
0
        public void SendHug(UserAccessToken userAccessToken, string recipientUserId)
        {
            _logger.Info("Sending hug from: " + userAccessToken.Email + " to " + recipientUserId);
            var hug = new Hug()
                          {
                              Created = DateTime.Now,
                              SenderID = userAccessToken.Ticket
                          };

            var mongoHug = Mapper.Map<Data.MongoDB.Model.Hug>(hug);
            _hugRepository.InsertHug(recipientUserId, mongoHug);
        }
        public void Login_Success()
        {
            var accessTokenProviderMock = new Mock<IUserAccessTokenProvider>();
            var accessTokenProvider = accessTokenProviderMock.Object;

            var userServiceMock = new Mock<IUserService>();
            var userService = userServiceMock.Object;

            var userController = new LoginController(userService, accessTokenProvider);

            var loginModel = new LoginViewModel()
                                 {
                                     Email = "testuser",
                                     Password = "******"
                                 };

            var credentials = new UserCredentials()
                                  {
                                      Email = loginModel.Email,
                                      Password = loginModel.Password
                                  };

            var accessToken = new UserAccessToken("123456");

            userServiceMock.Setup(a => a.Login(credentials)).Returns(accessToken);

            var result = userController.Index(loginModel) as RedirectToRouteResult;

            Assert.IsNotNull(result, "Login Action did not yield a Redirection");
            Assert.AreEqual(result.RouteValues["controller"], "Home");
            Assert.AreEqual(result.RouteValues["action"], "Index");

            //Assert that the controller forwarded the username and password to IUserService correctly
            userServiceMock.Verify(a => a.Login(credentials), Times.Once());

            //Assert that the controller set the session state correctly
            accessTokenProviderMock.Verify(a => a.SetUserAccessToken(accessToken));
        }
        public void SetUserAccessToken(UserAccessToken accessToken)
        {
            var hash = GenerateSaltedHash(accessToken.Email + ":" + accessToken.Ticket, GenerateSalt());
            var hashString = Convert.ToBase64String(hash);

            if (!_memcachedClient.Store(StoreMode.Set, hashString, accessToken))
            {
                _logger.Error("Failed to set access token for: " + accessToken.Email);
                throw new UserTokenPersistenceFailedExpcetion();
            }

            CurrentAccessToken = accessToken;

            var cookie = new HttpCookie(_cookieName, hashString)
                             {
                                 Secure = _useSecureCookie,     /* Ensures that this cookie is only used on SSL connections - this prevents Man-in-the-middle attacks */
                                 HttpOnly = true,               /* Ensures that the cookie cannot be read from JavaScript - this prevents XSS attacks */
                             };
            HttpContext.Current.Response.Cookies.Add(cookie);

            _logger.Info("Set access token for: " + accessToken.Email);
        }
        public bool TryGetAccessToken(out UserAccessToken accessToken)
        {
            if(CurrentAccessToken != null)
            {
                accessToken = CurrentAccessToken;
                return true;
            }

            string hash;
            if(TryGetHashFromCookie(out hash))
            {
                accessToken = _memcachedClient.Get<UserAccessToken>(hash);
                CurrentAccessToken = accessToken;
                return accessToken != null;
            }

            accessToken = null;
            return false;
        }
 public void SetUserAccessToken(UserAccessToken accessToken)
 {
     _httpContext.Session[_sessionKeyName] = accessToken;
 }
Beispiel #8
0
 public bool Equals(UserAccessToken other)
 {
     if (ReferenceEquals(null, other)) return false;
     if (ReferenceEquals(this, other)) return true;
     return Equals(other.Ticket, Ticket);
 }
Beispiel #9
0
 public void DeleteUser(UserAccessToken accessToken)
 {
     _userRepository.DeleteUser(accessToken.Ticket);
     _logger.Info("Deleted user account: " + accessToken.Email);
 }
Beispiel #10
0
 public void DismissHugs(UserAccessToken userAccessToken)
 {
     _hugRepository.DismissHugs(userAccessToken.Ticket);
 }
        public void Create_TestSuccess()
        {
            var userServiceMock = new Mock<IUserService>();
            var userService = userServiceMock.Object;

            var userProfileServiceMock = new Mock<IUserProfileService>();
            var userProfileService = userProfileServiceMock.Object;

            var controllerContextMock = new Mock<ControllerContext>();

            var userController = new UserController(userService, userProfileService);
            userController.ControllerContext = controllerContextMock.Object;

            var createModel = new CreateViewModel
            {
                Username = "******",
                Password = "******",
                StreetAddress = "rofl",
                City = "mao",
                ZipCode = 1000
            };

            var credentials = new UserCredentials()
                                  {
                                      Email = createModel.Email,
                                      Password = createModel.Password
                                  };

            var accessToken = new UserAccessToken("123456");

            userServiceMock.Setup(a => a.Create(credentials)).Returns(accessToken);
            userServiceMock.Setup(a => a.Login(credentials)).Returns(accessToken);

            var viewResult = userController.Index(createModel) as RedirectToRouteResult;

            Assert.IsNotNull(viewResult, "Controller did not return a RedirectToRouteResult");

            var userProfile = new UserProfile()
                                  {
                                      Username = createModel.Username,
                                      Address = new Address()
                                                    {
                                                        Street = createModel.StreetAddress,
                                                        City = createModel.City,
                                                        ZipCode = createModel.ZipCode
                                                    }
                                  };

            userServiceMock.Verify(a => a.Create(credentials));
            userProfileServiceMock.Verify(a => a.UpdateProfile(accessToken, userProfile));
        }