router.rs 2.1 KB

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