authController.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import {
  2. Response,
  3. Request
  4. } from "express";
  5. import {
  6. refreshToken as _refreshToken,
  7. finishMailVerify as _finishMailVerify,
  8. register as _register,
  9. logout as _logout,
  10. login as _login,
  11. me as _me
  12. } from "../actions/auth";
  13. import {
  14. AuthRequest
  15. } from "../middlewares/authMiddleware";
  16. export const register = async (req: Request, res: Response): Promise<void> => {
  17. try {
  18. const {
  19. phoneNumber,
  20. companyName,
  21. firstName,
  22. lastName,
  23. password,
  24. mail
  25. } = req.body;
  26. const result = await _register({
  27. phoneNumber,
  28. companyName,
  29. firstName,
  30. lastName,
  31. password,
  32. mail
  33. });
  34. res.status(result.code)
  35. .json({
  36. message: result.message,
  37. code: result.code
  38. });
  39. } catch (error) {
  40. console.error("Register error:", error);
  41. res.status(500)
  42. .json({
  43. message: "internal-server-error",
  44. code: 500,
  45. });
  46. }
  47. };
  48. export const login = async (req: Request, res: Response): Promise<void> => {
  49. try {
  50. const {
  51. password,
  52. mail
  53. } = req.body;
  54. const result = await _login({
  55. password,
  56. mail
  57. });
  58. res.status(result.code).json({
  59. message: result.message,
  60. code: result.code,
  61. ...(result.payload && {
  62. payload: result.payload
  63. }),
  64. });
  65. } catch (error) {
  66. console.error("Login error:", error);
  67. res.status(500)
  68. .json({
  69. message: "server-error",
  70. code: 500,
  71. });
  72. }
  73. };
  74. export const logout = async (req: AuthRequest, res: Response): Promise<void> => {
  75. try {
  76. const context = req.context;
  77. if (!context) {
  78. res.status(401).json({
  79. message: "unauthorized-missing-context",
  80. code: 401
  81. });
  82. return;
  83. }
  84. const {
  85. userID,
  86. token
  87. } = context;
  88. if (!userID || !token) {
  89. res.status(401).json({
  90. message: "unauthorized-missing-user-information",
  91. code: 401
  92. });
  93. return;
  94. }
  95. const result = await _logout(userID, token);
  96. res.status(result.code).json({
  97. message: result.message,
  98. code: result.code,
  99. });
  100. } catch (error) {
  101. console.error("Logout controller error:", error);
  102. res.status(500).json({
  103. message: "server-error",
  104. code: 500,
  105. });
  106. }
  107. };
  108. export const me = async (req: AuthRequest, res: Response): Promise<void> => {
  109. try {
  110. const context = req.context;
  111. if (!context || !context.userID) {
  112. res.status(401).json({
  113. message: "unauthorized", code: 401
  114. });
  115. return;
  116. }
  117. const result = await _me(context.userID);
  118. res.status(result.code).json({
  119. message: result.message,
  120. code: result.code,
  121. ...(result.payload && {
  122. payload: result.payload
  123. })
  124. });
  125. } catch (error) {
  126. res.status(500).json({
  127. message: "server-error", code: 500
  128. });
  129. }
  130. };
  131. export const refreshToken = async (req: Request, res: Response): Promise<void> => {
  132. try {
  133. const {
  134. refreshToken
  135. } = req.body;
  136. const result = await _refreshToken(refreshToken);
  137. res.status(result.code)
  138. .json({
  139. message: result.message,
  140. code: result.code,
  141. ...(result.payload && {
  142. payload: result.payload,
  143. }),
  144. });
  145. } catch (error) {
  146. console.error("RefreshToken controller error:", error);
  147. res.status(500)
  148. .json({
  149. message: "internal-server-error",
  150. code: 500,
  151. });
  152. }
  153. };
  154. export const finishMailVerify = async (req: Request, res: Response): Promise<void> => {
  155. try {
  156. const {
  157. userID,
  158. code
  159. } = req.body;
  160. const result = await _finishMailVerify({
  161. userID,
  162. code
  163. });
  164. res.status(result.code).json({
  165. message: result.message,
  166. code: result.code,
  167. });
  168. } catch (error) {
  169. console.error("FinishMailVerify controller error:", error);
  170. res.status(500).json({
  171. message: "internal-server-error",
  172. code: 500
  173. });
  174. }
  175. };