1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package autologin
- import (
- "encoding/json"
- "net/http"
- user "imuslab.com/arozos/mod/user"
- "imuslab.com/arozos/mod/utils"
- )
- type AutoLoginHandler struct {
- userHandler *user.UserHandler
- }
- func NewAutoLoginHandler(uh *user.UserHandler) *AutoLoginHandler {
- return &AutoLoginHandler{
- userHandler: uh,
- }
- }
- //List the token given the username
- func (a *AutoLoginHandler) HandleUserTokensListing(w http.ResponseWriter, r *http.Request) {
- username, err := utils.Mv(r, "username", false)
- if err != nil {
- utils.SendErrorResponse(w, "Invalid username")
- return
- }
- if !a.userHandler.GetAuthAgent().UserExists(username) {
- utils.SendErrorResponse(w, "User not exists!")
- return
- }
- tokens := a.userHandler.GetAuthAgent().GetTokensFromUsername(username)
- tokensOnly := []string{}
- for _, token := range tokens {
- tokensOnly = append(tokensOnly, token.Token)
- }
- jsonString, _ := json.Marshal(tokensOnly)
- utils.SendJSONResponse(w, string(jsonString))
- }
- //Handle User Token Creation, require username. Please use adminrouter to handle this function
- func (a *AutoLoginHandler) HandleUserTokenCreation(w http.ResponseWriter, r *http.Request) {
- username, err := utils.Mv(r, "username", false)
- if err != nil {
- utils.SendErrorResponse(w, "Invalid username")
- return
- }
- //Check if user exists
- authAgent := a.userHandler.GetAuthAgent()
- if !authAgent.UserExists(username) {
- utils.SendErrorResponse(w, "User not exists!")
- return
- }
- //Generate and send the token to client
- token := authAgent.NewAutologinToken(username)
- jsonString, _ := json.Marshal(token)
- utils.SendJSONResponse(w, string(jsonString))
- }
- //Remove the user token given the token
- func (a *AutoLoginHandler) HandleUserTokenRemoval(w http.ResponseWriter, r *http.Request) {
- token, err := utils.Mv(r, "token", false)
- if err != nil {
- utils.SendErrorResponse(w, "Invalid username")
- return
- }
- authAgent := a.userHandler.GetAuthAgent()
- authAgent.RemoveAutologinToken(token)
- utils.SendOK(w)
- }
|