// ///@ts-check
/// <reference path="../tools/Authenticate.js" />
/**
* $Id: AdapterColneoPro.js 9255 2025-11-08 12:45:26Z jochen.hanff $
*/
'use strict'
import { IModelViewer , ProjectContext } from "./IModelViewer.js";
import { AuthenticationServices } from "../tools/Authenticate.js";
////////////////////////////////////////////////////////
/// COLNEO pro
////////////////////////////////////////////////////////
/**
*
* @category Model Viewer
*
*/
export class AdptCOLNEOpro_10 extends IModelViewer {
constructor() {
super( "COLNEOpro_10", "COLNEO pro", "1.0.1" )
cnCoreAPI.selectionStateChanged.connect(this.onSelectionChanged.bind(this));
cnCoreAPI.visibilityStateChanged.connect(this.onVisibilityChanged.bind(this));
}
/**
*
* @param {*} cb Call Back
* returns : {
* }
* @param {*} user
*/
loginUser__idp( cb , user = null ) {
console.log( '### <AdptCOLNEOpro_10.loginUser> ')
/////////////////////////////////////////
cnApplicationAPI.getUser((ret_user) => {
// console.log("ret user:")
// console.log(JSON.stringify(ret_user))
if (ret_user.status < 300) {
this.setAccessToken( ret_user , (ret_accesstoken) => {
return cb({
'status': ret_accesstoken.status,
'data': ret_accesstoken
})
})
} else {
const urlParams = new URLSearchParams(window.location.search);
const authcode = urlParams.get('authcode');
const user = urlParams.get('user');
if (authcode != undefined && authcode.length > 0) {
console.log("GOT AUTHCODE")
cnApplicationAPI.loginUser(user, authcode, (ret_login) => {
console.log("=> logged in")
cnApplicationAPI.getUser((ret_user) => {
this.setAccessToken(ret_user, (ret_accesstoken) => {
return cb({
'status': ret_accesstoken.status,
'data': ret_accesstoken
})
})
})
})
} else {
const l = window.location
// window.location = `https://idp.colneo.services/cnapp_login?redirect=${l}&uselocalstorage=false&user=jochen.hanff@colneo.email`
let qu = ''
if( user ) {
qu = `&user=${qu}`
}
window.location = `https://idp.colneo.services/cnapp_login?redirect=${l}&uselocalstorage=false${qu}`
}
}
})
}
/**
*
* Get user,token
* Uses 'old' IAM login for now.
*
* returns {
* 'status' :
* 'data' : {
* 'user' : " ... "
* 'token' : " ... "
* }
* }
*
* @param {*} cb
* @param {*} user
*
*/
async loginUser( cb, user = null) {
// Check if user already logged in with COLNEO pro.
// If not, use cn_login
// will be changed later to -> IDP cnapp_login
cnApplicationAPI.getUser( async (ret_user) => {
// console.log("ret user from app:")
// console.log(JSON.stringify(ret_user))
if (ret_user.status < 300) {
// console.log("=> GOT USER")
let u = ret_user.data.userid
let rt = await cnApplicationAPI.getAccessToken()
// console.log("RET TOKEN:")
// console.log( JSON.stringify(rt) )
let ret_iam_t = await AuthenticationServices.login_IAM( u , rt.data )
let iam_t = ret_iam_t.data
// console.log("RESPONSE IAM LOGIN")
// console.log( JSON.stringify(ret_iam_t) )
return cb({
'status': 200,
'data': {
'userid' : u,
'token' : iam_t.token
}
})
} else {
let url = window.location // .href
let auth_target_ = new URL(url.protocol + url.host + "/cn_login")
console.log(`auth : ${auth_target_}`)
//
// check if user and token are stored in local storage
// if so, return user/token, otherwise forward to
// webpage ./cn_login
let u = window.localStorage.getItem('user')
let t = window.localStorage.getItem('token')
if (user != undefined) {
if (u != user) {
t = null
}
u = user
}
if (t == undefined) {
let queryString = window.location.search;
let urlParams = new URLSearchParams(queryString);
urlParams.set('redirect', window.location) // window.location.href ???
if (typeof _default_userid_ != 'undefined') {
urlParams.set('userid', _default_userid_) // window.location.href ???
}
let target = auth_target_
target.search = urlParams.toString()
window.location = target
} else {
cnApplicationAPI.loginUser(u, t, async (ret) => {
// alert('loggedin')
return cb({
'status': 200,
'data': {
'userid': u,
'token' : t
}
})
})
}
}
})
}
logoutUser( cb ) {
console.log("LOGOUT")
cnApplicationAPI.logoutUser() //aab causing issue function not found in colneo pro
window.localStorage.removeItem('token')
window.localStorage.removeItem('user')
// window.location.reload()
window.location.replace(window.location.origin + window.location.pathname);
return cb({
'status' : 200
})
}
/**
*
* @param {Context} context
* @param {*} cb
*/
async restoreProjectContext( context, cb ) {
const is = await cnProjectAPI.getInfohubSettings()
if ( is.status < 300 ) {
const scope = is.data.scope_id
const project_sid = is.data.project_shortid
const connectedby = is.data.connected_by
this._infohub_project_ctx.setScopeProject( scope, project_sid , connectedby );
context.setScopeAndProjectShortId( scope, project_sid )
return cb({
'status': 200,
'data': this._infohub_project_ctx
})
} else {
return cb({
'status' : is.status
})
}
}
async resetProjectContext( context , cb ) {
return cb({
'status': 200,
'data': this._infohub_project_ctx
})
}
/**
* @since 2025-10-14, aab
*/
setInfohubSettings( settings ) {
return cnProjectAPI.setInfohubSettings(settings)
}
/**
* @since 2025-10-14, aab
*/
getInfohubSettings( ) {
return cnProjectAPI.getInfohubSettings()
}
// ======== Project Methods ========
getProjectDirectory() {
return cnProjectAPI.getInfo().then(result => {
return {
status: result.status,
message: result.message,
data: result.data?.filePath || null
};
});
}
setAccessToken( ret_user , cb ) {
cnApplicationAPI.getAccessToken((ret_token) => {
console.log("RET TOKEN")
console.log(JSON.stringify(ret_token))
if (ret_token.status < 300) {
return cb({
'status': 200,
'token': ret_token.data,
'userid': ret_user.data.userid,
'avatar': ret_user.data.avatar,
'name': ret_user.data.name
})
} else {
return cb({
'status': ret_token.status,
'message': "Access denied"
})
}
})
}
/**
*
* Open URL/Link in external browser or in webform module
*
* @param {*} url
* @param {*} target
*/
openUrl(url, target = '') {
// target empty uses the default browser
return cnGuiAPI.openUrl(url, target || '');
}
getSelectedObjectIds(domains) {
// console.log( '### COLNEOpro.getSelectedObjectIds()')
// const resp = await cnCoreAPI.getSelectedObjectIds( domains )
// console.log( JSON.stringify(resp) )
// return resp.data
return cnCoreAPI.getSelectedObjectIds( domains ).then(function (result) {
return result.data;
})
}
getObjects(objIdList, opt ) {
return cnCoreAPI.getObjects(objIdList, opt ).then(function (result) {
return result.data;
})
}
getObjectIds(domains) {
return cnCoreAPI.getObjectIds(domains).then(function (result) {
return result.data;
})
}
filterObjectsByProperties( objIds, filterExpression) {
return cnCoreAPI.filterObjectsByProperties(objIds,filterExpression).then(function (result) {
return result.data;
})
}
}
/**
*
* @category Model Viewer
*
*/
export class COLNEOproAdapterServices {
constructor() {
}
/**
* Create instance of correct DESITE version API class
*
* @returns {Promise<IModelViewer>} Adapter instrance
*
*/
static async createAdapter() {
return new AdptCOLNEOpro_10();
}
}
Source