1+ import Errors from '../../common/constants/Errors' ;
12import { handleDbError } from '../decorators/handleError' ;
23import User from '../models/User' ;
34import filterAttribute from '../utils/filterAttribute' ;
5+ import { loginUser } from '../../common/actions/userActions' ;
46
57export default {
68 list ( req , res ) {
@@ -20,17 +22,25 @@ export default {
2022 } ,
2123
2224 create ( req , res ) {
23- const user = User ( {
24- name : req . body . name ,
25- email : {
26- value : req . body . email ,
27- } ,
28- password : req . body . password ,
29- } ) ;
30- user . save ( handleDbError ( res ) ( ( user ) => {
31- res . json ( {
32- user : user ,
33- } ) ;
25+ User . findOne ( {
26+ 'email.value' : req . body . email ,
27+ } , handleDbError ( res ) ( ( user ) => {
28+ if ( user ) {
29+ res . errors ( [ Errors . USER_EXISTED ] ) ;
30+ } else {
31+ const user = User ( {
32+ name : req . body . name ,
33+ email : {
34+ value : req . body . email ,
35+ } ,
36+ password : req . body . password ,
37+ } ) ;
38+ user . save ( handleDbError ( res ) ( ( user ) => {
39+ res . json ( {
40+ user : user ,
41+ } ) ;
42+ } ) ) ;
43+ }
3444 } ) ) ;
3545 } ,
3646
@@ -61,6 +71,26 @@ export default {
6171 } ) ) ;
6272 } ,
6373
74+ socialLogin ( req , res , next ) {
75+ let { user } = req ;
76+ let token = user . toJwtToken ( ) ;
77+
78+ user . save ( handleDbError ( res ) ( ( ) => {
79+ req . store
80+ . dispatch ( loginUser ( {
81+ token : token ,
82+ data : user ,
83+ } ) )
84+ . then ( ( ) => {
85+ let { token, user } = req . store . getState ( ) . cookies ;
86+
87+ res . cookie ( 'token' , token ) ;
88+ res . cookie ( 'user' , user ) ;
89+ res . redirect ( '/' ) ;
90+ } ) ;
91+ } ) ) ;
92+ } ,
93+
6494 logout ( req , res ) {
6595 req . logout ( ) ;
6696 res . json ( { } ) ;
0 commit comments