コード例 #1
0
        public async Task <LoginTokens> GetTokens()
        {
            var ApiUsername = configuration.GetValue <string>("Galileo:username");
            var ApiPassword = configuration.GetValue <string>("Galileo:password");
            var ApiUrl      = configuration.GetValue <string>("Galileo:url");

            using (var httpClient = new HttpClient())
            {
                var values = new Dictionary <string, string>
                {
                    { "username", ApiUsername },
                    { "password", ApiPassword }
                };
                var content = new FormUrlEncodedContent(values);

                var response = await httpClient.PostAsync(ApiUrl + "/login", content);

                var responseString = await response.Content.ReadAsStringAsync();

                var options = new JsonSerializerOptions
                {
                    PropertyNameCaseInsensitive = true
                };
                LoginTokens tokens = JsonSerializer.Deserialize <LoginTokens>
                                         (responseString, options);

                return(tokens);
            }
        }
コード例 #2
0
        public static bool SignUp(NameValueCollection Headers, ref Response response)
        {
            string uname = Headers["username"], pword = Headers["password"];

            if (uname != null && pword != null)
            {
                if (Data.Objects.User.Find(uname) == null)
                {
                    Data.Objects.User user = new Data.Objects.User(uname, pword);
                    MemoryHandler.Users.Insert(user);

                    response.AddCookie("authtoken", LoginTokens.CreateToken(user));
                    response.StatusCode = 200;
                }
                else
                {
                    response.AddToData("Error", "User already exists");
                    response.StatusCode = 401;
                }
            }
            else
            {
                response.StatusCode = 400;
                response.AddToData("Error", "username & password must be provided");
            }
            return(false);
        }
コード例 #3
0
        public static bool SignIn(NameValueCollection Headers, ref Response response)
        {
            string uname = Headers["username"], pword = Headers["password"];

            if (uname != null && pword != null)
            {
                Data.Objects.User user = Data.Objects.User.Find(uname);
                if (user != null && Hashing.Match(user.hashPassword, pword))
                {
                    response.AddCookie("authtoken", LoginTokens.CreateToken(user));
                    response.StatusCode = 200;
                    return(true);
                }
                else
                {
                    response.AddToData("Error", "User doesnt exist or password is wrong");
                    response.StatusCode = 401;
                }
            }
            else
            {
                response.StatusCode = 400;
                response.AddToData("Error", "username & password must be provided");
            }
            return(false);
        }
コード例 #4
0
        public static bool DeleteAccount(NameValueCollection Headers, ref Response response)
        {
            string token = Headers["authtoken"], uname = Headers["username"];

            if (token != null && uname != null)
            {
                if (LoginTokens.IsLoggedIn(uname, token))
                {
                    Data.Objects.User user = LoginTokens.FindUserByName(uname);
                    MemoryHandler.Users.DeleteMany(x => x.userName == user.userName);
                    response.StatusCode = 200;
                }
                else
                {
                    response.StatusCode = 401;
                    response.AddToData("Error", "authtoken is not valid");
                }
            }
            else
            {
                response.StatusCode = 400;
                response.AddToData("Error", "username & authtoken must be provided");
            }
            return(false);
        }
コード例 #5
0
        private LoginTokens GetTokensForUser(string email)
        {
            var user                = _accountRepository.GetUserByEmail(email);
            var accessToken         = _accessTokenService.CreateToken(user);
            var refreshToken        = _refreshTokenService.CreateToken(user);
            var refreshTokenPayload = _jwtService.GetJwtPayload(refreshToken);

            _accountRepository.UpdateUserRefreshTokenId(email, refreshTokenPayload.jti);

            var loginTokens = new LoginTokens(accessToken, refreshToken);

            return(loginTokens);
        }
コード例 #6
0
        public async Task <bool> CreateUser(string username)
        {
            var ApiUrl = configuration.GetValue <string>("Galileo:url");

            // Note:  This returns valid tokens
            LoginTokens tokens = await GetTokens();

            // Note:  This returns valid agreements
            AgreementsInfo agreements = await GetAgreements(tokens.Access_Token);

            // Note:  Having trouble with the final POST to actually create the cardholder
            int cardholder_id = await CreateCardHolder(tokens.Access_Token, agreements, username);

            return(true);
        }
コード例 #7
0
        public static bool Logout(NameValueCollection Headers, ref Response response)
        {
            string token = Headers["authtoken"], uname = Headers["username"];

            if (token != null && uname != null)
            {
                if (LoginTokens.RemoveUser(uname, token))
                {
                    response.StatusCode = 200;
                }
                else
                {
                    response.StatusCode = 401;
                    response.AddToData("Error", "You are already signed out");
                }
            }
            else
            {
                response.StatusCode = 400;
                response.AddToData("Error", "username & authtoken must be provided");
            }
            return(false);
        }
コード例 #8
0
ファイル: User.cs プロジェクト: zlepper/WhoNeedsHelp
        public LoginToken CheckLoginToken(string key)
        {
            LoginToken loginToken = LoginTokens.SingleOrDefault(token => PasswordHash.ValidatePassword(key, token.Key));

            return(loginToken);
        }
コード例 #9
0
ファイル: User.cs プロジェクト: zlepper/WhoNeedsHelp
 public void GenerateLoginToken(Guid key)
 {
     LoginTokens.Add(new LoginToken(this, key));
 }