コード例 #1
0
func (s *AEServer) HandleTokenInfoRequest(c context.Context, w *osin.Response, r *http.Request) *TokenInfoRequest {
	r.ParseForm()
	token := r.Form.Get("access_token")
	if token == "" {
		w.SetError(osin.E_INVALID_REQUEST, "")
		return nil
	}
	ret := &TokenInfoRequest{
		AccessToken: token,
	}
	var err error
	ret.AccessData, err = s.storage.LoadAccess(c, ret.AccessToken)
	if err != nil {
		w.SetError(osin.E_INVALID_REQUEST, "")
		w.InternalError = err
		return nil
	}
	if ret.AccessData == nil {
		w.SetError(osin.E_INVALID_REQUEST, "")
		return nil
	}
	if ret.AccessData.Client.GetRedirectUri() == "" {
		w.SetError(osin.E_UNAUTHORIZED_CLIENT, "")
		return nil
	}
	if ret.AccessData.IsExpiredAt(s.server.Now()) {
		w.SetError(osin.E_UNAUTHORIZED_CLIENT, "")
		return nil
	}
	return ret
}