1
1
import User from './schemas/Users' ;
2
2
import Message from './schemas/Message' ;
3
+ import bcrypt from 'bcrypt' ;
4
+ import jwt from 'jsonwebtoken' ;
5
+ import dotenv from 'dotenv' ;
3
6
import { IResolvers , PubSub } from 'apollo-server' ;
4
7
5
8
const pubsub = new PubSub ( ) ;
6
9
const CHAT_CHANNEL = 'CHAT_CHANNEL' ;
7
10
11
+ dotenv . config ( ) ;
12
+
8
13
const resolvers : IResolvers = {
9
14
Query : {
10
15
users : ( ) => User . find ( ) ,
@@ -15,8 +20,32 @@ const resolvers: IResolvers = {
15
20
} ,
16
21
17
22
Mutation : {
18
- createUser : ( _ , { name, email } ) => User . create ( { name, email } ) ,
23
+ createUser : async ( _ , { name, email, senha } ) => {
24
+ const encryptedPassword = await bcrypt . hash ( senha , 10 ) ;
25
+
26
+ return User . create ( {
27
+ name,
28
+ email,
29
+ senha : encryptedPassword
30
+ } ) ;
31
+ } ,
19
32
deleteUser : ( _ , { id } ) => User . remove ( id ) ,
33
+ login : async ( _ , { login } ) => {
34
+ const { email, senha } = login ;
35
+
36
+ const result = await User . findOne ( { email } ) ;
37
+
38
+
39
+ if ( result && bcrypt . compare ( senha , result . senha ) ) {
40
+ const token = jwt . sign ( { id : result . _id } , process . env . PRIVATE_KEY as string ) ;
41
+
42
+ return {
43
+ id : result . id ,
44
+ token
45
+ } ;
46
+ }
47
+ return null ;
48
+ } ,
20
49
sendMessage : async ( _ , { userID, content } ) => {
21
50
// Busca o usuário por id
22
51
const user = await User . findById ( userID ) ;
0 commit comments