@@ -736,22 +736,32 @@ module.exports = function(User) {
736
736
( verifyOptions . protocol === 'https' && verifyOptions . port == '443' )
737
737
) ? '' : ':' + verifyOptions . port ;
738
738
739
- var urlPath = joinUrlPath (
740
- verifyOptions . restApiRoot ,
741
- userModel . http . path ,
742
- userModel . sharedClass . findMethodByName ( 'confirm' ) . http . path
743
- ) ;
739
+ if ( ! verifyOptions . verifyHref ) {
740
+ const confirmMethod = userModel . sharedClass . findMethodByName ( 'confirm' ) ;
741
+ if ( ! confirmMethod ) {
742
+ throw new Error (
743
+ 'Cannot build user verification URL, ' +
744
+ 'the default confirm method is not public. ' +
745
+ 'Please provide the URL in verifyOptions.verifyHref.' ) ;
746
+ }
744
747
745
- verifyOptions . verifyHref = verifyOptions . verifyHref ||
746
- verifyOptions . protocol +
747
- '://' +
748
- verifyOptions . host +
749
- displayPort +
750
- urlPath +
751
- '?' + qs . stringify ( {
752
- uid : '' + verifyOptions . user [ pkName ] ,
753
- redirect : verifyOptions . redirect ,
754
- } ) ;
748
+ const urlPath = joinUrlPath (
749
+ verifyOptions . restApiRoot ,
750
+ userModel . http . path ,
751
+ confirmMethod . http . path
752
+ ) ;
753
+
754
+ verifyOptions . verifyHref =
755
+ verifyOptions . protocol +
756
+ '://' +
757
+ verifyOptions . host +
758
+ displayPort +
759
+ urlPath +
760
+ '?' + qs . stringify ( {
761
+ uid : '' + verifyOptions . user [ pkName ] ,
762
+ redirect : verifyOptions . redirect ,
763
+ } ) ;
764
+ }
755
765
756
766
verifyOptions . to = verifyOptions . to || user . email ;
757
767
verifyOptions . subject = verifyOptions . subject || g . f ( 'Thanks for Registering' ) ;
@@ -779,7 +789,10 @@ module.exports = function(User) {
779
789
780
790
// TODO - support more verification types
781
791
function sendEmail ( user ) {
782
- verifyOptions . verifyHref += '&token=' + user . verificationToken ;
792
+ verifyOptions . verifyHref +=
793
+ verifyOptions . verifyHref . indexOf ( '?' ) === - 1 ? '?' : '&' ;
794
+ verifyOptions . verifyHref += 'token=' + user . verificationToken ;
795
+
783
796
verifyOptions . verificationToken = user . verificationToken ;
784
797
verifyOptions . text = verifyOptions . text || g . f ( 'Please verify your email by opening ' +
785
798
'this link in a web browser:\n\t%s' , verifyOptions . verifyHref ) ;
0 commit comments