N dot L is missing
Not taking into account any normal direction of the surface, which is exactly what you’re seeing here.
N = normal of surface
dot = dot product
L = light direction (normalize(light position - surface position)
So then you have a dot product node that plugs in your N and L as inputs
Then you can multiply by attenuation (distance) and color afterwards before finally outputting to Custom Lighting.