@@ -28,12 +28,14 @@ class CreateAccountRequest extends AuthRequest {
2828 * this url on successful account creation
2929 * @param [options.enforceToc] {boolean} Whether or not to enforce the service provider's T&C
3030 * @param [options.tocUri] {string} URI to the service provider's T&C
31+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
3132 */
3233 constructor ( options ) {
3334 super ( options )
3435
3536 this . username = options . username
3637 this . userAccount = options . userAccount
38+ this . acceptToc = options . acceptToc === 'true'
3739 }
3840
3941 /**
@@ -47,7 +49,7 @@ class CreateAccountRequest extends AuthRequest {
4749 * `userAccountFrom()`), or it encounters an unsupported authentication
4850 * scheme.
4951 *
50- * @return {CreateAccountRequest |CreateTlsAccountRequest }
52+ * @return {CreateOidcAccountRequest |CreateTlsAccountRequest }
5153 */
5254 static fromParams ( req , res ) {
5355 let options = AuthRequest . requestOptions ( req , res )
@@ -63,9 +65,8 @@ class CreateAccountRequest extends AuthRequest {
6365 options . userAccount = accountManager . userAccountFrom ( body )
6466 }
6567
66- const config = require ( '../../config' )
67- options . enforceToc = config . enforceToc
68- options . tocUri = config . tocUri
68+ options . enforceToc = locals . enforceToc
69+ options . tocUri = locals . tocUri
6970
7071 switch ( authMethod ) {
7172 case 'oidc' :
@@ -79,13 +80,15 @@ class CreateAccountRequest extends AuthRequest {
7980 }
8081 }
8182
82- static post ( req , res ) {
83+ static async post ( req , res ) {
8384 let request = CreateAccountRequest . fromParams ( req , res )
8485
85- return Promise . resolve ( )
86- . then ( ( ) => request . validate ( ) )
87- . then ( ( ) => request . createAccount ( ) )
88- . catch ( error => request . error ( error ) )
86+ try {
87+ request . validate ( )
88+ await request . createAccount ( )
89+ } catch ( error ) {
90+ request . error ( error )
91+ }
8992 }
9093
9194 static get ( req , res ) {
@@ -231,6 +234,7 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
231234 *
232235 * @param [options={ }] {Object} See `CreateAccountRequest` constructor docstring
233236 * @param [options.password] {string} Password, as entered by the user at signup
237+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
234238 */
235239 constructor ( options ) {
236240 super ( options )
@@ -258,6 +262,13 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
258262 error . statusCode = 400
259263 throw error
260264 }
265+
266+ // console.log(this.enforceToc, this.acceptToc)
267+ if ( this . enforceToc && ! this . acceptToc ) {
268+ error = new Error ( 'Accepting Terms & Conditions are required for this service' )
269+ error . statusCode = 400
270+ throw error
271+ }
261272 }
262273
263274 /**
@@ -297,6 +308,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
297308 *
298309 * @param [options={ }] {Object} See `CreateAccountRequest` constructor docstring
299310 * @param [options.spkac] {string}
311+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
300312 */
301313 constructor ( options ) {
302314 super ( options )
@@ -306,7 +318,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
306318 }
307319
308320 /**
309- * Validates the Login request (makes sure required parameters are present),
321+ * Validates the Signup request (makes sure required parameters are present),
310322 * and throws an error if not.
311323 *
312324 * @throws {Error } If missing required params
@@ -319,6 +331,12 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
319331 error . statusCode = 400
320332 throw error
321333 }
334+
335+ if ( this . enforceToc && ! this . acceptToc ) {
336+ error = new Error ( 'Accepting Terms & Conditions are required for this service' )
337+ error . statusCode = 400
338+ throw error
339+ }
322340 }
323341
324342 /**
0 commit comments