//try login the user to the platform and apply requested permissons func (o *Api) applyAuthorization(user, password string, ar *osin.AuthorizeRequest) error { log.Println(OAUTH2_API_PREFIX, "applyAuthorization") if usr, _, err := o.userApi.Login(user, password); err != nil { log.Printf(OAUTH2_API_PREFIX+"applyAuthorization: err during account login: %s", err.Error()) return err } else if usr != nil { log.Printf(OAUTH2_API_PREFIX+"applyAuthorization: tidepool login success for userid[%s] now applying permissons", usr.UserID) if o.applyPermissons(usr.UserID, ar.Client.GetId(), getAllScopes()) { //make sure we persist any existing client userdata ud := ar.Client.GetUserData().(map[string]interface{}) ud["AppUser"] = usr.UserID ar.Client = &osin.DefaultClient{ Id: ar.Client.GetId(), Secret: ar.Client.GetSecret(), RedirectUri: ar.Client.GetRedirectUri(), UserData: ud, } log.Print(OAUTH2_API_PREFIX, "applyAuthorization: user data set", ar.UserData) return nil } else { log.Printf(OAUTH2_API_PREFIX+"applyAuthorization: error[%s]", error_applying_permissons) return errors.New(error_applying_permissons) } } log.Printf(OAUTH2_API_PREFIX+"applyAuthorization: no user or error from login returning[%s] ", error_check_tidepool_creds) return errors.New(error_check_tidepool_creds) }