@@ -450,32 +450,56 @@ class ChallengesService {
450
450
return getApiResponsePayload ( res ) ;
451
451
}
452
452
453
+ /**
454
+ * Get the Resource Role ID from provided Role Name
455
+ * @param {String } roleName
456
+ * @return {Promise }
457
+ */
458
+ async getResourceRoleId ( roleName ) {
459
+ const params = {
460
+ name : roleName ,
461
+ isActive : true ,
462
+ } ;
463
+ const roles = await this . private . apiV5 . get ( `/resource-roles?${ qs . stringify ( params ) } ` )
464
+ . then ( checkErrorV5 ) . then ( res => res ) ;
465
+
466
+ if ( _ . isEmpty ( roles . result ) ) {
467
+ throw new Error ( 'Resource Role not found!' ) ;
468
+ }
469
+
470
+ return roles . result [ 0 ] . id ;
471
+ }
472
+
453
473
/**
454
474
* Registers user to the specified challenge.
455
475
* @param {String } challengeId
456
- * @param {String } memberHandle
457
- * @param {String } roleId
458
476
* @return {Promise }
459
477
*/
460
- async register ( challengeId , memberHandle , roleId ) {
478
+ async register ( challengeId ) {
479
+ const user = decodeToken ( this . private . tokenV3 ) ;
480
+ const roleId = await this . getResourceRoleId ( 'Submitter' ) ;
461
481
const params = {
462
- challengeId, memberHandle, roleId,
482
+ challengeId,
483
+ memberHandle : user . handle ,
484
+ roleId,
463
485
} ;
464
- const res = await this . private . apiV5 . post ( '/resources' , params ) ;
486
+ const res = await this . private . apiV5 . postJson ( '/resources' , params ) ;
465
487
if ( ! res . ok ) throw new Error ( res . statusText ) ;
466
488
return res . json ( ) ;
467
489
}
468
490
469
491
/**
470
492
* Unregisters user from the specified challenge.
471
493
* @param {String } challengeId
472
- * @param {String } memberHandle
473
- * @param {String } roleId
474
494
* @return {Promise }
475
495
*/
476
- async unregister ( challengeId , memberHandle , roleId ) {
496
+ async unregister ( challengeId ) {
497
+ const user = decodeToken ( this . private . tokenV3 ) ;
498
+ const roleId = await this . getResourceRoleId ( 'Submitter' ) ;
477
499
const params = {
478
- challengeId, memberHandle, roleId,
500
+ challengeId,
501
+ memberHandle : user . handle ,
502
+ roleId,
479
503
} ;
480
504
const res = await this . private . apiV5 . delete ( '/resources' , params ) ;
481
505
if ( ! res . ok ) throw new Error ( res . statusText ) ;
0 commit comments