AppMetrics.WebUtils.BasicAuthenticationModule.GetUser C# (CSharp) Method

GetUser() static private method

static private GetUser ( string name ) : UserCredentials
name string
return UserCredentials
        static UserCredentials GetUser(string name)
        {
            lock (Sync)
            {
                try
                {
                    if (_users == null)
                    {
                        WebLogger.Report(string.Format("Reading user credentials from '{0}'", CredentialsFileName));

                        var text = File.ReadAllText(CredentialsFileName);

                        _users = new Dictionary<string, UserCredentials>();
                        var lines = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var line in lines)
                        {
                            var parts = line.Split('\t');
                            if (parts.Length == 3)
                            {
                                var user = new UserCredentials
                                    {
                                        Name = parts[0],
                                        Salt = Encoding.Unicode.GetString(Convert.FromBase64String(parts[1])),
                                        PasswordHash = parts[2],
                                    };
                                _users.Add(user.Name, user);
                            }
                        }

                        var userNames = _users.Keys.ToArray();
                        WebLogger.Report(string.Format("Found users '{0}'", String.Join(" ", userNames)));
                    }
                }
                catch (Exception exc)
                {
                    WebLogger.Report(exc);
                }

                if (_users == null)
                    return null;

                UserCredentials res;
                if (!_users.TryGetValue(name, out res))
                    WebLogger.Report(string.Format("User '{0}' not found", name));
                return res;
            }
        }