@@ -17,7 +17,8 @@ public class UserCommandHandler : CommandHandler,
1717 IRequestHandler < RegisterNewUserWithProviderCommand , bool > ,
1818 IRequestHandler < SendResetLinkCommand , bool > ,
1919 IRequestHandler < ResetPasswordCommand , bool > ,
20- IRequestHandler < ConfirmEmailCommand , bool >
20+ IRequestHandler < ConfirmEmailCommand , bool > ,
21+ IRequestHandler < AddLoginCommand , bool >
2122 {
2223 private readonly IUserService _userService ;
2324
@@ -47,6 +48,21 @@ public async Task<bool> Handle(RegisterNewUserCommand request, CancellationToken
4748 phoneNumber : request . PhoneNumber ,
4849 picture : request . Picture
4950 ) ;
51+
52+ var emailAlreadyExist = await _userService . FindByEmailAsync ( user . Email ) ;
53+ if ( emailAlreadyExist != null )
54+ {
55+ await Bus . RaiseEvent ( new DomainNotification ( "1001" , "E-mail already exist. If you don't remember your passwork, reset it." ) ) ;
56+ return false ;
57+ }
58+ var usernameAlreadyExist = await _userService . FindByNameAsync ( user . UserName ) ;
59+
60+ if ( usernameAlreadyExist != null )
61+ {
62+ await Bus . RaiseEvent ( new DomainNotification ( "1002" , "Username already exist. If you don't remember your passwork, reset it." ) ) ;
63+ return false ;
64+ }
65+
5066 var id = await _userService . CreateUserWithPass ( user , request . Password ) ;
5167 if ( id . HasValue )
5268 {
@@ -72,6 +88,21 @@ public async Task<bool> Handle(RegisterNewUserWithoutPassCommand request, Cancel
7288 phoneNumber : request . PhoneNumber ,
7389 picture : request . Picture
7490 ) ;
91+
92+ var emailAlreadyExist = await _userService . FindByEmailAsync ( user . Email ) ;
93+ if ( emailAlreadyExist != null )
94+ {
95+ await Bus . RaiseEvent ( new DomainNotification ( "1001" , "E-mail already exist. If you don't remember your passwork, reset it." ) ) ;
96+ return false ;
97+ }
98+ var usernameAlreadyExist = await _userService . FindByNameAsync ( user . UserName ) ;
99+
100+ if ( usernameAlreadyExist != null )
101+ {
102+ await Bus . RaiseEvent ( new DomainNotification ( "1002" , "Username already exist. If you don't remember your passwork, reset it." ) ) ;
103+ return false ;
104+ }
105+
75106 var id = await _userService . CreateUserWithProvider ( user , request . Provider , request . ProviderId ) ;
76107 if ( id . HasValue )
77108 {
@@ -159,6 +190,22 @@ public async Task<bool> Handle(ConfirmEmailCommand request, CancellationToken ca
159190 return false ;
160191 }
161192
193+ public async Task < bool > Handle ( AddLoginCommand request , CancellationToken cancellationToken )
194+ {
195+ if ( ! request . IsValid ( ) )
196+ {
197+ NotifyValidationErrors ( request ) ;
198+ return false ; ;
199+ }
200+
201+ var result = await _userService . AddLoginAsync ( request . Email , request . Provider , request . ProviderId ) ;
202+ if ( result . HasValue )
203+ {
204+ await Bus . RaiseEvent ( new NewLoginAddedEvent ( result . Value , request . Email , request . Provider , request . ProviderId ) ) ;
205+ return true ;
206+ }
207+ return false ;
208+ }
162209 }
163210
164211
0 commit comments