Inherit this handler to access to session user from your custom handler.
For example, you need a profile handler that checks if the user is logged before returning it in json format.
import popcorn::pop_auth
class ProfileHandler
super AuthHandler
redef fun get(req, res) do
var user = check_session_user(req, res)
if user == null then return
res.json user
end
end
By using check_session_user
, we delegate to the AuthHandler
the responsability
to set the HTTP 403 error.
We then check is the user is not null before pursuing.
popcorn :: AuthHandler :: check_session_user
Check the session for user and return it.popcorn :: AuthHandler :: defaultinit
popcorn :: AuthHandler :: session_user
Returnsuser
from req.session
or null if no user is authenticated.
popcorn $ AuthHandler :: SELF
Type of this instance, automatically specialized in every classpopcorn :: AuthHandler :: check_session_user
Check the session for user and return it.core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
popcorn :: Handler :: defaultinit
core :: Object :: defaultinit
popcorn :: AuthHandler :: defaultinit
popcorn :: Handler :: deserialize_body
Deserialize the request bodycore :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
core :: Object :: output_class_name
Display class name on stdout (debug only).popcorn :: AuthHandler :: session_user
Returnsuser
from req.session
or null if no user is authenticated.
popcorn :: Handler :: validate_body
Validate body input withvalidator
popcorn :: Handler :: validator
Validator used to check body inputpopcorn :: Handler :: validator=
Validator used to check body input
# AuthHandler allows access to session user
#
# Inherit this handler to access to session user from your custom handler.
#
# For example, you need a profile handler that checks if the user is logged
# before returning it in json format.
# ~~~
# import popcorn::pop_auth
#
# class ProfileHandler
# super AuthHandler
#
# redef fun get(req, res) do
# var user = check_session_user(req, res)
# if user == null then return
# res.json user
# end
# end
# ~~~
#
# By using `check_session_user`, we delegate to the `AuthHandler` the responsability
# to set the HTTP 403 error.
# We then check is the user is not null before pursuing.
abstract class AuthHandler
super Handler
# Returns `user` from `req.session` or null if no user is authenticated.
fun session_user(req: HttpRequest): nullable User do
var session = req.session
if session == null then return null
var user = session.user
return user
end
# Check the session for user and return it.
#
# If no `user` can be found in session, set res as a HTTP 403 error and return `null`.
fun check_session_user(req: HttpRequest, res: HttpResponse): nullable User do
var user = session_user(req)
if user == null then
res.error 403
end
return user
end
end
lib/popcorn/pop_auth.nit:271,1--315,3