@@ -29,12 +29,14 @@ class CreateAccountRequest extends AuthRequest {
2929 * this url on successful account creation
3030 * @param [options.enforceToc] {boolean} Whether or not to enforce the service provider's T&C
3131 * @param [options.tocUri] {string} URI to the service provider's T&C
32+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
3233 */
3334 constructor ( options ) {
3435 super ( options )
3536
3637 this . username = options . username
3738 this . userAccount = options . userAccount
39+ this . acceptToc = options . acceptToc === 'true'
3840 }
3941
4042 /**
@@ -48,7 +50,7 @@ class CreateAccountRequest extends AuthRequest {
4850 * `userAccountFrom()`), or it encounters an unsupported authentication
4951 * scheme.
5052 *
51- * @return {CreateAccountRequest |CreateTlsAccountRequest }
53+ * @return {CreateOidcAccountRequest |CreateTlsAccountRequest }
5254 */
5355 static fromParams ( req , res ) {
5456 let options = AuthRequest . requestOptions ( req , res )
@@ -64,9 +66,8 @@ class CreateAccountRequest extends AuthRequest {
6466 options . userAccount = accountManager . userAccountFrom ( body )
6567 }
6668
67- const config = require ( '../../config' )
68- options . enforceToc = config . enforceToc
69- options . tocUri = config . tocUri
69+ options . enforceToc = locals . enforceToc
70+ options . tocUri = locals . tocUri
7071
7172 switch ( authMethod ) {
7273 case 'oidc' :
@@ -80,13 +81,15 @@ class CreateAccountRequest extends AuthRequest {
8081 }
8182 }
8283
83- static post ( req , res ) {
84+ static async post ( req , res ) {
8485 let request = CreateAccountRequest . fromParams ( req , res )
8586
86- return Promise . resolve ( )
87- . then ( ( ) => request . validate ( ) )
88- . then ( ( ) => request . createAccount ( ) )
89- . catch ( error => request . error ( error ) )
87+ try {
88+ request . validate ( )
89+ await request . createAccount ( )
90+ } catch ( error ) {
91+ request . error ( error )
92+ }
9093 }
9194
9295 static get ( req , res ) {
@@ -251,6 +254,7 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
251254 *
252255 * @param [options={ }] {Object} See `CreateAccountRequest` constructor docstring
253256 * @param [options.password] {string} Password, as entered by the user at signup
257+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
254258 */
255259 constructor ( options ) {
256260 super ( options )
@@ -278,6 +282,13 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
278282 error . statusCode = 400
279283 throw error
280284 }
285+
286+ // console.log(this.enforceToc, this.acceptToc)
287+ if ( this . enforceToc && ! this . acceptToc ) {
288+ error = new Error ( 'Accepting Terms & Conditions are required for this service' )
289+ error . statusCode = 400
290+ throw error
291+ }
281292 }
282293
283294 /**
@@ -317,6 +328,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
317328 *
318329 * @param [options={ }] {Object} See `CreateAccountRequest` constructor docstring
319330 * @param [options.spkac] {string}
331+ * @param [options.acceptToc] {boolean} Whether or not user has accepted T&C
320332 */
321333 constructor ( options ) {
322334 super ( options )
@@ -326,7 +338,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
326338 }
327339
328340 /**
329- * Validates the Login request (makes sure required parameters are present),
341+ * Validates the Signup request (makes sure required parameters are present),
330342 * and throws an error if not.
331343 *
332344 * @throws {Error } If missing required params
@@ -339,6 +351,12 @@ class CreateTlsAccountRequest extends CreateAccountRequest {
339351 error . statusCode = 400
340352 throw error
341353 }
354+
355+ if ( this . enforceToc && ! this . acceptToc ) {
356+ error = new Error ( 'Accepting Terms & Conditions are required for this service' )
357+ error . statusCode = 400
358+ throw error
359+ }
342360 }
343361
344362 /**
0 commit comments