コード例 #1
0
        /// <summary>
        /// Creates streaming user.
        /// </summary>
        /// <param name="userName">User name string.</param>
        /// <param name="password">Password string.</param>
        /// <returns></returns>
        public bool CreateUser(string userName, string password)
        {
            var userNameValidation = new Regex("[a-z,A-Z,0-9,_!@#$%^&*]{4,32}", RegexOptions.Compiled | RegexOptions.Singleline);

            if (string.IsNullOrEmpty(userName) ||
                !userNameValidation.IsMatch(userName, 0) ||
                string.IsNullOrEmpty(password) ||
                password.Length < 6)
            {
                throw new InvalidOperationException(@"Invalid username, allowed characters are 'a-z,A-Z,0-9,_!@#$%^&*' and length between 4 and 32 !");
            }

            if (string.IsNullOrEmpty(password) ||
                password.Length < 6)
            {
                throw new InvalidOperationException(@"Invalid password, minimum 6 characters !");
            }

            var user = (from su in _dataContext.Get <StreamingUser>()
                        where su.UserName == userName
                        select su).FirstOrDefault();

            if (user != null)
            {
                return(false);
            }

            user              = new StreamingUser();
            user.UserName     = userName;
            user.PasswordHash = CryptographyHelper.ComputeHashSHA1($"{userName}_+_{password}{user.PasswordSalt}");

            _dataContext.Add(user);
            _dataContext.SaveChanges();
            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Authentication of streaming user.
        /// </summary>
        /// <param name="userName">User name string</param>
        /// <param name="password">Password string.</param>
        /// <param name="hash">Hash string.</param>
        /// <param name="userId">Authenticated user identifier.</param>
        /// <returns></returns>
        public bool Authenticate(string userName, string password, string hash, out Guid userId)
        {
            userId = Guid.Empty;
            var user = (from su in _dataContext.Get <StreamingUser>()
                        where su.UserName == userName
                        select su).FirstOrDefault();

            if (user == null || user.IsActive == false)
            {
                return(false);
            }

            var passwordHash = CryptographyHelper.ComputeHashSHA1($"{userName}_+_{password}{user.PasswordSalt}");

            if (user.PasswordHash == passwordHash)
            {
                userId = user.Id;
                return(true);
            }
            return(false);
        }