Пример #1
0
        /// <summary>
        /// Creates a user in database with the specific OpenID.
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="user"></param>
        public void CreateUserWithOpenId(string openId, User user)
        {
            var openid = GetOpenId(openId);
            if (openid != null && openid.User == null)
                throw new CreateUserException(string.Format("User with {0} OpenID already exists.", openId));
            // create openId and bind the user to the openid
            openid = new OpenId {OpenIdUrl = openId, User = user};

            user.ApiKey = Guid.NewGuid();

            // save openid
            _userDb.OpenIds.Add(openid); //EFCodeFirst
        }
Пример #2
0
        public void FromUser_WithoutRoles_Test()
        {
            var user = new User { UserId = 1, Username = "******", FullName = "Test User", Email = "*****@*****.**", ApiKey = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e") };
            //user.Roles = { "Admin", "Guest" };

            var expected = new UserInfo { UserId = 1, Username = "******", FullName = "Test User", Email = "*****@*****.**", ApiKey = "0f8fad5b-d9cb-469f-a165-70867728950e" };

            var actual = UserInfo.FromUser(user);

            Assert.AreEqual(expected.UserId, actual.UserId);
            Assert.AreEqual(expected.Username, actual.Username);
            Assert.AreEqual(expected.Email, actual.Email);
            Assert.AreEqual(expected.FullName, actual.FullName);
            Assert.AreEqual(expected.ApiKey, actual.ApiKey);
            Assert.AreEqual(0, actual.Roles.Length);
        }
Пример #3
0
        /// <summary>
        /// Sets authentication cookie with auth ticket for the specific user.
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public void LoginUser(User user)
        {
            // We need to make a FormsAuthenticationTicket.
            // To store UserInfo data in it we use the 2nd overload.
            var ticket = new FormsAuthenticationTicket(1,
                user.Username,
                DateTime.Now,
                DateTime.Now.AddDays(14),
                true,
                UserInfo.FromUser(user).ToString(),
                FormsAuthentication.FormsCookiePath);

            // Now we encrypt the ticket so no one can read it...
            string encTicket = FormsAuthentication.Encrypt(ticket);

            // ...make a cookie and add it. ASP.NET will now know that our user is logged in.
            var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
            HttpContext.Current.Response.Cookies.Add(authCookie);
        }
Пример #4
0
        public void FromUser_WithRoles_Test()
        {
            var user = new User { UserId = 1, Username = "******", FullName = "Test User", Email = "*****@*****.**", ApiKey = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e") };
            user.Roles = new List<Role> { new Role { RoleName = "Admin" }, new Role { RoleName = "Guest" } };

            var expected = new UserInfo { UserId = 1, Username = "******", FullName = "Test User", Email = "*****@*****.**", ApiKey = "0f8fad5b-d9cb-469f-a165-70867728950e" };
            expected.Roles = new[] { "Admin", "Guest" };

            var actual = UserInfo.FromUser(user);

            Assert.AreEqual(expected.UserId, actual.UserId);
            Assert.AreEqual(expected.Username, actual.Username);
            Assert.AreEqual(expected.Email, actual.Email);
            Assert.AreEqual(expected.FullName, actual.FullName);
            Assert.AreEqual(expected.ApiKey, actual.ApiKey);

            Assert.AreEqual(2, actual.Roles.Length);
            Assert.AreEqual(expected.Roles[0], actual.Roles[0]);
            Assert.AreEqual(expected.Roles[1], actual.Roles[1]);
        }
Пример #5
0
        /// <summary>
        /// Creates a UserInfo class from the User class.
        /// </summary>
        /// <param name="user">User who's data is used to create the UserInfo.</param>
        /// <returns>UserInfo created from User.</returns>
        public static UserInfo FromUser(User user)
        {
            var roles = new List<string>();
            if (user.Roles != null)
            {
                foreach (var role in user.Roles)
                {
                    roles.Add(role.RoleName);
                }
            }

            var result = new UserInfo
            {
                UserId = user.UserId,
                Username = user.Username,
                Email = user.Email,
                FullName = user.FullName,
                Roles = roles.ToArray(),
                ApiKey = user.ApiKey.ToString()
            };
            return result;
        }
Пример #6
0
 /// <summary>
 /// Removes user from the database.
 /// </summary>
 /// <param name="user">User to be removed.</param>
 /// <remarks>User deletion is cascading which means that all of user's OpenIDs will get deleted from the database when the user is deleted.</remarks>
 public void RemoveUser(User user)
 {
     _userDb.Users.Remove(user); //EFCodeFirst
 }