authController.ts 3.9 KB

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