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 package auth 14 15 import ( 16 "net/http" 17 ) 18 19 type basicAuth struct { 20 s Server 21 } 22 23 // BasicAuth returns a basic auth handler. 24 func BasicAuth() Handler { 25 return &basicAuth{} 26 } 27 28 func (a *basicAuth) Init(s Server) (string, AuthenticateFunc) { 29 a.s = s 30 return "default", // For compatibility with the name used by CouchDB 31 a.Authenticate 32 } 33 34 func (a *basicAuth) Authenticate(_ http.ResponseWriter, r *http.Request) (*UserContext, error) { 35 username, password, ok := r.BasicAuth() 36 if !ok { 37 return nil, nil 38 } 39 return a.s.UserStore().Validate(r.Context(), username, password) 40 } 41