router.rs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. use crate::routers::utils::parse_from_payload;
  2. use actix_web::{
  3. web::{Data, Payload},
  4. HttpRequest,
  5. HttpResponse,
  6. };
  7. use crate::user_service::{
  8. get_user_details,
  9. register_user,
  10. set_user_detail,
  11. sign_in,
  12. sign_out,
  13. LoggedUser,
  14. };
  15. use actix_identity::Identity;
  16. use flowy_net::{errors::ServerError, response::FlowyResponse};
  17. use flowy_user::protobuf::{SignInParams, SignUpParams, UpdateUserParams, UserToken};
  18. use sqlx::PgPool;
  19. pub async fn sign_in_handler(
  20. payload: Payload,
  21. id: Identity,
  22. pool: Data<PgPool>,
  23. ) -> Result<HttpResponse, ServerError> {
  24. let params: SignInParams = parse_from_payload(payload).await?;
  25. let data = sign_in(pool.get_ref(), params).await?;
  26. id.remember(data.token.clone());
  27. let response = FlowyResponse::success().pb(data)?;
  28. Ok(response.into())
  29. }
  30. pub async fn sign_out_handler(payload: Payload, id: Identity) -> Result<HttpResponse, ServerError> {
  31. let params: UserToken = parse_from_payload(payload).await?;
  32. id.forget();
  33. let response = sign_out(params).await?;
  34. Ok(response.into())
  35. }
  36. pub async fn get_user_detail_handler(
  37. logged_user: LoggedUser,
  38. pool: Data<PgPool>,
  39. ) -> Result<HttpResponse, ServerError> {
  40. let response = get_user_details(pool.get_ref(), logged_user).await?;
  41. Ok(response.into())
  42. }
  43. pub async fn set_user_detail_handler(
  44. logged_user: LoggedUser,
  45. pool: Data<PgPool>,
  46. payload: Payload,
  47. ) -> Result<HttpResponse, ServerError> {
  48. let params: UpdateUserParams = parse_from_payload(payload).await?;
  49. let response = set_user_detail(pool.get_ref(), logged_user, params).await?;
  50. Ok(response.into())
  51. }
  52. pub async fn register_handler(
  53. payload: Payload,
  54. pool: Data<PgPool>,
  55. ) -> Result<HttpResponse, ServerError> {
  56. let params: SignUpParams = parse_from_payload(payload).await?;
  57. let resp = register_user(pool.get_ref(), params).await?;
  58. Ok(resp.into())
  59. }
  60. pub async fn change_password(
  61. _request: HttpRequest,
  62. _payload: Payload,
  63. _pool: Data<PgPool>,
  64. ) -> Result<HttpResponse, ServerError> {
  65. unimplemented!()
  66. }