Open
Description
I have a situation where the user sends a token from client via query params and I use the same to validate the session and store the the userId in the RP session.
options.sessionCreator = function (params) {
let token = params.token;
let user = params.user;
if (!token || token == "" || !user || user == "") {
return Promise.reject('Invalid auth token');
} else {
// use teade to validate the user from user service
const clients = {
users: {
host: process.env.SERVICE_RPC_HOST,
port: process.env.CXI_USER_PORT
}
}
const data = {
token: token,
user: user
}
const authenticator = require('./middlewares/authenticator');
return Promise.promisify(authenticator.auth)(clients, data)
.then(function(result){
return Promise.resolve({userId: result.data.id});
}).catch(function(err){
return Promise.reject(err.message);
})
}
};
now I want to add this userId in the filter of a query but I dont have this id in the frontend.
So I am looking for a way to either
- add a filter to the query on the server (maybe in validate) and not send the aforementioned filter from frontend
- modify the filter data on the server no matter what is sent from the front end.
// whitelisted query
r.table("trades").orderBy({index: allowSpecificFieldOrderBy(RP, "datetime")})
.filter(r.row("currency").eq(allowAnyString(RP)))
.filter(r.row("isExecuted").eq(true))
.filter(r.row('userId').eq(
/* what can I use here? */
))
.pluck("datetime", "rate", "id")
.changes({"includeInitial": true}).opt("db", r.db("cxihub"))
.validate(function (refs, session) {
// console.log(refs, session)
// { userId: '' } { userId: 1 }
return true;
})
Metadata
Metadata
Assignees
Labels
No labels