107 lines
2.7 KiB
TypeScript
107 lines
2.7 KiB
TypeScript
import { Request, Response } from 'express'
|
|
import { authService } from './auth.service'
|
|
import { AuthRequest } from '../../shared/middleware/auth'
|
|
|
|
export const authController = {
|
|
register: async (req: Request, res: Response) => {
|
|
try {
|
|
const result = await authService.register(req.body)
|
|
res.status(201).json({
|
|
success: true,
|
|
message: 'تم التسجيل بنجاح',
|
|
data: result
|
|
})
|
|
} catch (error: any) {
|
|
res.status(400).json({
|
|
success: false,
|
|
message: error.message
|
|
})
|
|
}
|
|
},
|
|
|
|
login: async (req: Request, res: Response) => {
|
|
try {
|
|
|
|
const { email, password } = req.body
|
|
|
|
if (!email || !password) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: 'الرجاء إدخال البريد/اسم المستخدم وكلمة المرور'
|
|
})
|
|
}
|
|
|
|
const result = await authService.login(String(email).trim(), String(password))
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'تم تسجيل الدخول بنجاح',
|
|
data: result
|
|
})
|
|
} catch (error: any) {
|
|
res.status(error?.statusCode || 401).json({
|
|
success: false,
|
|
message: error.message || 'بيانات الدخول غير صحيحة'
|
|
})
|
|
}
|
|
},
|
|
|
|
me: async (req: AuthRequest, res: Response) => {
|
|
try {
|
|
const userId = req.user?.id
|
|
if (!userId) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: 'غير مصرح'
|
|
})
|
|
}
|
|
|
|
const user = await authService.getUserById(userId)
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'تم جلب البيانات بنجاح',
|
|
data: user
|
|
})
|
|
} catch (error: any) {
|
|
res.status(400).json({
|
|
success: false,
|
|
message: error.message
|
|
})
|
|
}
|
|
},
|
|
|
|
refreshToken: async (req: Request, res: Response) => {
|
|
try {
|
|
const { refreshToken } = req.body
|
|
const result = await authService.refreshToken(refreshToken)
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'تم تحديث الرمز بنجاح',
|
|
data: result
|
|
})
|
|
} catch (error: any) {
|
|
res.status(401).json({
|
|
success: false,
|
|
message: error.message
|
|
})
|
|
}
|
|
},
|
|
|
|
logout: async (req: AuthRequest, res: Response) => {
|
|
try {
|
|
const userId = req.user?.id
|
|
if (userId) {
|
|
await authService.logout(userId)
|
|
}
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'تم تسجيل الخروج بنجاح'
|
|
})
|
|
} catch (error: any) {
|
|
res.status(400).json({
|
|
success: false,
|
|
message: error.message
|
|
})
|
|
}
|
|
}
|
|
} |