Hi!
I’m having issues of finding an example of how to pass Authorization Bearer token to my netfliy-identity-widget when the user logs in.
Reason I want to do that is to read the user from the clientContext in my identity-login
function
Hi!
I’m having issues of finding an example of how to pass Authorization Bearer token to my netfliy-identity-widget when the user logs in.
Reason I want to do that is to read the user from the clientContext in my identity-login
function
Hi @vorci,
Could you elaborate on what you mean? You don’t have to pass any Bearer Token to the widget. I think you mean, you wish to get the bearer token from the widget. If that’s the case, you don’t need Authorization header could do it something like:
exports.handler = async event => {
console.log(event.body.user)
// rest of the stuff
}
event.body.user
will automatically consist of the User object. If you want to do something with the Auth token, you’d have to do something like:
netlifyIdentity.on('login', user => {
fetch('/.netlify/functions/postLogin/, {
headers: {
Authorization: 'Bearer ' + user.token.access_token,
}
}).then(response => {
if (respose.ok) {
return response.json()
} else {
throw response.statusText
}
}).then(data => {
console.log(data)
}).catch(error => {
console.log(error)
})
})
If you submit the data this way, then in your custom serverless function, you could do something like:
exports.handler = async (event, context) => {
const {identity, user} = context.clientContext;
// Do stuff and return a response...
}
Hi, thanks for the reply!
What I mean is found on following link :
The
user
object is present if the function request has anAuthorization: Bearer <token>
header with a valid JWT from the Identity instance. In this case the object will contain the decoded claims.
Right now when I try to log the clientContext with identity-login
function it has no user property
export function handler(event, context, callback) {
const { user } = context.clientContext;
console.log(context.clientContext);
return callback(null, {
statusCode: 200,
body: JSON.stringify({status:"OK"})
})
}
And the log will be something like
{
custom: {
netlify: 'xxx'
},
identity: {
url: 'xxx',
token: 'xxx'
}
}
I assume the reason is what is found on the link I’ve attached above
Yes, as I said, if you wish to pass the Authorization header, you’d have to create a different function which you can manually trigger with the login callback of the widget.
Thank you ! That clarifies things.
So when we want to do something with user propertiy post login the convention is to create a custom callback and use that instead of identity-login?
Well, you do get the user object in identity-login
function too. That’s what I’ve shown in my first example (event.body.user
). You also get the identity admin token in that function, so you could use your GoTrueJS Admin methods on the user even in that.
I don’t see a reason why you’d need to create a custom function, but yes, a custom function would be needed only if you need the Bearer token specifically. If you can work without it, the identity-login
function does include the user
object on which you can work.
Understood , thanks!
I think there’s just one small correction its event.user
not event.body.user
.
Hi @vorci,
Are you sure? I really think it’s event.body.user
. That’s how I got it working and it even says so in the docs:
The payload is in the body of the event.
Yeah event.body
is undefined, event.user
is not.
I’ve tried with both