...

Source file src/github.com/go-kivik/kivik/v4/x/kivikd/session.go

Documentation: github.com/go-kivik/kivik/v4/x/kivikd

     1  // Licensed under the Apache License, Version 2.0 (the "License"); you may not
     2  // use this file except in compliance with the License. You may obtain a copy of
     3  // the License at
     4  //
     5  //  http://www.apache.org/licenses/LICENSE-2.0
     6  //
     7  // Unless required by applicable law or agreed to in writing, software
     8  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     9  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    10  // License for the specific language governing permissions and limitations under
    11  // the License.
    12  
    13  //go:build !js
    14  
    15  package kivikd
    16  
    17  import (
    18  	"context"
    19  	"net/http"
    20  
    21  	"github.com/go-kivik/kivik/v4/x/kivikd/auth"
    22  )
    23  
    24  // DefaultInsecureSecret is the hash secret used if couch_httpd_auth.secret
    25  // is unconfigured. Please configure couch_httpd_auth.secret, or they're all
    26  // gonna laugh at you!
    27  const DefaultInsecureSecret = "They're all gonna laugh at you!"
    28  
    29  // DefaultSessionTimeout is the default session timeout, in seconds, used if
    30  // couch_httpd_auth.timeout is inuset.
    31  const DefaultSessionTimeout = 600
    32  
    33  func (s *Service) getAuthSecret() string {
    34  	if s.Conf().IsSet("couch_httpd_auth.secret") {
    35  		return s.Conf().GetString("couch_httpd_auth.secret")
    36  	}
    37  	return DefaultInsecureSecret
    38  }
    39  
    40  func setSession() func(http.Handler) http.Handler {
    41  	return func(next http.Handler) http.Handler {
    42  		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    43  			ctx := r.Context()
    44  			// We store a pointer to a pointer, so the underlying pointer can
    45  			// be updated by the auth process, without losing the reference.
    46  			session := &auth.Session{}
    47  			ctx = context.WithValue(ctx, SessionKey, &session)
    48  			r = r.WithContext(ctx)
    49  			next.ServeHTTP(w, r)
    50  		})
    51  	}
    52  }
    53  

View as plain text