Changeset 1968


Ignore:
Timestamp:
Jul 19, 2011, 4:34:58 PM (8 years ago)
Author:
robert@…
Message:

Updated rest controller so anonymous users (i.e. without sessionToken) can also retrieve their data. If the user is anonymous, he will only get data that is public (where study.publicstudy = true and study.published = true)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/RestController.groovy

    r1967 r1968  
    8282         */
    8383        def getUser = {
     84                if( !auth() )
     85                        return;
     86               
    8487                SecUser user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )
    8588                def reply = [username: user.username, id: user.id, isAdministrator: user.hasAdminRights() ]
     
    147150                        def study = Study.findByStudyUUID( params.studyToken )
    148151                        if( study ) {
    149                                 if( !study.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )) ) {
     152                                if( !study.canRead(user) ) {
    150153                                        response.sendError(401)
    151154                                        return false
     
    171174                        if(study) {
    172175                                // Check whether the person is allowed to read the data of this study
    173                                 if( study.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) {
     176                                if( study.canRead(user)) {
    174177
    175178                                        def items = [studyToken:study.giveUUID(), 'public': study.publicstudy]
     
    214217         */
    215218        def getStudyVersion = {
    216 
     219                def user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )
     220               
    217221                def versionInfo = [:];
    218222                def study
     
    224228                        study = Study.findByStudyUUID( params.studyToken )
    225229                        if( study ) {
    226                                 if( !study.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )) ) {
     230                                if( !study.canRead(user) ) {
    227231                                        response.sendError(401)
    228232                                        return false
     
    293297         */
    294298        def getSubjects = {
     299                // Check which user has been logged in
     300                def user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )
     301 
    295302                List subjects = []
    296303                if( params.studyToken ) {
     
    299306                        if(study) {
    300307                                // Check whether the person is allowed to read the data of this study
    301                                 if( !study.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) {
     308                                if( !study.canRead(user) ) {
    302309                                        response.sendError(401)
    303310                                        return false
     
    359366         */
    360367        def getAssays = {
     368                // Check which user has been logged in
     369                def user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )
     370 
    361371                // set output header to json
    362372                response.contentType = 'application/json'
     
    380390                        if(study) {
    381391                                // Check whether the person is allowed to read the data of this study
    382                                 if( !study.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) {
     392                                if( !study.canRead(user)) {
    383393                                        response.sendError(401)
    384394                                        return false
     
    410420                } else {
    411421                        // Return all assays for the given module
    412                         assays = Assay.list().findAll{ it.parent.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ) ) }
     422                        assays = Assay.list().findAll{ it.parent.canRead( user ) }
    413423                }
    414424
     
    459469         * Result:
    460470         * [{"sampleToken":"5_A","material":"blood plasma","subject":"5","event":"Blood extraction","startTime":"4 days, 6 hours"},
    461          * {"sampleToken":"6_A","material":"blood plasma","subject":"6","event":"Blood extraction","startTime":"4 days, 6 hours"},
     471         * {"sampleToken":"6_A","mateauthenticationService.getRemotelyLoggedInUser( params.consumer, params.token )rial":"blood plasma","subject":"6","event":"Blood extraction","startTime":"4 days, 6 hours"},
    462472         * {"sampleToken":"10_A","material":"blood plasma","subject":"10","event":"Blood extraction","startTime":"4 days, 6 hours"},
    463473         * {"sampleToken":"2_A","material":"blood plasma","subject":"2","event":"Blood extraction","startTime":"4 days, 6 hours"},
     
    500510         */
    501511        def getSamples = {
     512                // Check which user has been logged in
     513                def user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token )
     514
    502515                def items = []
    503516                def samples
     
    507520                        if( assay )  {
    508521                                // Check whether the person is allowed to read the data of this study
    509                                 if( !assay.parent.canRead(authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) {
     522                                if( !assay.parent.canRead( user )) {
    510523                                        response.sendError(401)
    511524                                        return false
     
    520533                } else {
    521534                        // Find all samples from studies the user can read
    522                         def studies = Study.list().findAll { it.canRead( authenticationService.getRemotelyLoggedInUser( params.consumer, params.token ) ) };
     535                        def studies = Study.list().findAll { it.canRead( user ) };
    523536                        samples = studies*.getSamples().flatten();
    524537                }
     
    617630                def user = authenticationService.getRemotelyLoggedInUser( params.consumer, params.token );
    618631                def auth = ['isOwner': study.isOwner(user), 'canRead': study.canRead(user), 'canWrite': study.canWrite(user)];
    619                 log.trace "Authorization for study " + study.title + " and user " + user.username + ": " + auth
     632                log.trace "Authorization for study " + study.title + " and user " + user?.username + ": " + auth
    620633
    621634                // set output header to json
Note: See TracChangeset for help on using the changeset viewer.