feat: added funtionality to show all users
This commit is contained in:
parent
b2450419eb
commit
0ef6095481
|
|
@ -20,7 +20,7 @@ async fn main() {
|
||||||
|
|
||||||
let state = AppState { gotrue_client };
|
let state = AppState { gotrue_client };
|
||||||
|
|
||||||
let web_app_router = web_app::router();
|
let web_app_router = web_app::router().with_state(state.clone());
|
||||||
let web_api_router = web_api::router().with_state(state);
|
let web_api_router = web_api::router().with_state(state);
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
use crate::access_token::WebAccessToken;
|
use crate::access_token::WebAccessToken;
|
||||||
use crate::error::RenderError;
|
use crate::error::RenderError;
|
||||||
use askama::Template;
|
use askama::Template;
|
||||||
|
use axum::extract::State;
|
||||||
use axum::response::Result;
|
use axum::response::Result;
|
||||||
use axum::{response::Html, routing::get, Router};
|
use axum::{response::Html, routing::get, Router};
|
||||||
use axum_extra::extract::cookie::CookieJar;
|
|
||||||
|
|
||||||
use crate::templates;
|
use crate::{templates, AppState};
|
||||||
|
|
||||||
pub fn router() -> Router {
|
pub fn router() -> Router<AppState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/", get(home_handler))
|
.route("/", get(home_handler))
|
||||||
.route("/home", get(home_handler))
|
.route("/home", get(home_handler))
|
||||||
|
|
@ -26,7 +26,11 @@ pub async fn admin_handler(access_token: WebAccessToken) -> Result<Html<String>,
|
||||||
Ok(Html(s))
|
Ok(Html(s))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn admin_users_handler(cookies: CookieJar) -> Result<Html<String>, RenderError> {
|
pub async fn admin_users_handler(
|
||||||
|
State(state): State<AppState>,
|
||||||
|
access_token: WebAccessToken,
|
||||||
|
) -> Result<Html<String>, RenderError> {
|
||||||
|
let users = state.gotrue_client.admin_list_user(&access_token.0).await;
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{% extends "home.html" %}
|
||||||
|
|
@ -13,6 +13,12 @@ pub struct Identity {
|
||||||
pub updated_at: String,
|
pub updated_at: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
pub struct AdminListUsersResponse {
|
||||||
|
pub users: Vec<User>,
|
||||||
|
pub aud: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
@ -48,7 +54,7 @@ pub struct User {
|
||||||
pub user_metadata: serde_json::Value,
|
pub user_metadata: serde_json::Value,
|
||||||
|
|
||||||
pub factors: Option<Vec<Factor>>,
|
pub factors: Option<Vec<Factor>>,
|
||||||
pub identities: Vec<Identity>,
|
pub identities: Option<Vec<Identity>>,
|
||||||
|
|
||||||
pub created_at: String,
|
pub created_at: String,
|
||||||
pub updated_at: String,
|
pub updated_at: String,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@ use anyhow::Context;
|
||||||
|
|
||||||
use super::grant::Grant;
|
use super::grant::Grant;
|
||||||
use gotrue_entity::{
|
use gotrue_entity::{
|
||||||
AccessTokenResponse, GoTrueError, GoTrueSettings, OAuthError, OAuthProvider, SignUpResponse, User,
|
AccessTokenResponse, AdminListUsersResponse, GoTrueError, GoTrueSettings, OAuthError,
|
||||||
|
OAuthProvider, SignUpResponse, User,
|
||||||
};
|
};
|
||||||
use infra::reqwest::{check_response, from_body, from_response};
|
use infra::reqwest::{check_response, from_body, from_response};
|
||||||
|
|
||||||
|
|
@ -117,6 +118,19 @@ impl Client {
|
||||||
to_gotrue_result(resp).await
|
to_gotrue_result(resp).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn admin_list_user(
|
||||||
|
&self,
|
||||||
|
access_token: &str,
|
||||||
|
) -> Result<AdminListUsersResponse, GoTrueError> {
|
||||||
|
let resp = self
|
||||||
|
.client
|
||||||
|
.get(format!("{}/admin/users", self.base_url))
|
||||||
|
.header("Authorization", format!("Bearer {}", access_token))
|
||||||
|
.send()
|
||||||
|
.await?;
|
||||||
|
to_gotrue_result(resp).await
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn admin_add_user(
|
pub async fn admin_add_user(
|
||||||
&self,
|
&self,
|
||||||
access_token: &str,
|
access_token: &str,
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn admin_user_create() {
|
async fn admin_user_create_and_list() {
|
||||||
let http_client = reqwest::Client::new();
|
let http_client = reqwest::Client::new();
|
||||||
let gotrue_client = Client::new(http_client, "http://localhost:9998");
|
let gotrue_client = Client::new(http_client, "http://localhost:9998");
|
||||||
let admin_token = gotrue_client
|
let admin_token = gotrue_client
|
||||||
|
|
@ -50,6 +50,12 @@ async fn admin_user_create() {
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert!(user_token.user.email_confirmed_at.is_some());
|
assert!(user_token.user.email_confirmed_at.is_some());
|
||||||
|
|
||||||
|
let users = gotrue_client
|
||||||
|
.admin_list_user(&admin_token.access_token)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
panic!("{:?}", users);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue