Exemple #1
0
        public async Task <IActionResult> Callback(string token, string address, string type)
        {
            // Authenticates the token
            Result <User> result = await _crossConnectionManager.AuthenticateUser(address, token);

            if (result.Failure)
            {
                return(StatusCode(result.Code, result.Error));
            }

            // Signs in with cookie if web, otherwise returns JWT
            if (type == "web")
            {
                return(await SignInUser(result.Value, Redirect("/")));
            }
            if (type == "api")
            {
                return(Ok(JwtToken.CreateToken(result.Value.Username, result.Value.UserID.ToString(), _config.PrivateKey)));
            }
            return(BadRequest());
        }
        // Authenticates a user
        public async Task <Result <string> > Authenticate(string username, string password)
        {
            // Gets a user and returns failure if details are incorrect
            User user = await _repository.GetUserAsync(username);

            if (user == null)
            {
                return(Result.Fail <string>("username incorrect", 400));
            }

            if (!user.CheckPassword(password))
            {
                return(Result.Fail <string>("password incorrect", 400));
            }
            if (user.Deleted)
            {
                return(Result.Fail <string>("username incorrect", 400));
            }

            // Creates and returns a JWT token
            string token = JwtToken.CreateToken(username, user.UserID.ToString(), _config.PrivateKey);

            return(Result.Ok(token));
        }
Exemple #3
0
        public async Task <IActionResult> Login(LoginRequest request)
        {
            string token = JwtToken.CreateToken(request.userName, request.password);

            return(new StringResultObject(Request, token));
        }