Handling authentication on functions

i am unable to get the current user from a function i created.

What i want to do?
I created a function called /api/colab that accepts a body with a room id, the goal is that I am able to get the currentUser in the function and extract the id and fullname.

What i tried;

  • tried using the getCurrentUser(session_toke) but got invalid token error
  • tried to pass the token from the web side but still got the same error

So my questions;

  • how do you handle authentication on the functions
  • how do you get the current user

We’ve added this function in lib/auth that you can call from your function to initialize the context:

 * To use in other(not graphql) functions.
 * Provides only the user id, and the user object can be loaded after if needed.
 * To remove when RedwoodJS provides a solution
export const initFunctionSession = (event: APIGatewayEvent): void => {
  const cookie = extractCookie(event)
  if (cookie) {
    const encryptedSession = getSession(cookie)
    if (encryptedSession) {
      const [session, _csrfToken] = decryptSession(encryptedSession)
      context.currentUser = { ...session }
1 Like

Hi @amkayondo i think you may want to see how to wrap your function in “useRequireAuth” as described in the following documentation: Serverless Functions | RedwoodJS Docs


thank you, let me try it out and get back to you

how do you handle this section for dbAuth

I mean this part on the frontend

Authorization: Bearer myJWT.accesstoken.signature
auth-provider: supabase
Content-Type: application/json

// room.tsx
am i retrieving the token the right way and also it seems the token is not the access token and how do i retrieve the access token on the web side without usind hooks

  const [token, setToken] = useState('')

  const { currentUser, getToken } = useAuth()

  const _token = async () => {
    const data = await getToken()

  useEffect(() => {
    return () => {}
  }, [])


// live blocks client

const client = createClient({
  // publicApiKey: ""
  // authEndpoint: "/api/auth",
  // throttle: 100,
  authEndpoint: async (room) => {
    console.log('asd', room)

    const keyValuePairs = room.split('&')

    const jsonObject: {
      roomid: string
      token: string
    } = {}

    keyValuePairs.forEach((pair) => {
      const [key, value] = pair.split('=')
      jsonObject[key] = value

    return await axios
          room: jsonObject?.roomid,
          headers: {
            Authorization: `Bearer ${jsonObject.token}`,
            'auth-provider': 'dbAuth',
            'Content-Type': 'application/json',
      .then((res) => {
        return res.data