mirror of
https://github.com/dutchcoders/transfer.sh.git
synced 2025-01-15 21:20:19 +01:00
81 lines
1.6 KiB
Go
81 lines
1.6 KiB
Go
// Copyright 2015 Google Inc. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package auth
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/google/martian"
|
|
)
|
|
|
|
const key = "auth.Context"
|
|
|
|
// Context contains authentication information.
|
|
type Context struct {
|
|
mu sync.RWMutex
|
|
id string
|
|
err error
|
|
}
|
|
|
|
// FromContext retrieves the auth.Context from the session.
|
|
func FromContext(ctx *martian.Context) *Context {
|
|
if v, ok := ctx.Session().Get(key); ok {
|
|
return v.(*Context)
|
|
}
|
|
|
|
actx := &Context{}
|
|
ctx.Session().Set(key, actx)
|
|
|
|
return actx
|
|
}
|
|
|
|
// ID returns the ID.
|
|
func (ctx *Context) ID() string {
|
|
ctx.mu.RLock()
|
|
defer ctx.mu.RUnlock()
|
|
|
|
return ctx.id
|
|
}
|
|
|
|
// SetID sets the ID.
|
|
func (ctx *Context) SetID(id string) {
|
|
ctx.mu.Lock()
|
|
defer ctx.mu.Unlock()
|
|
|
|
ctx.err = nil
|
|
|
|
if id == "" {
|
|
return
|
|
}
|
|
|
|
ctx.id = id
|
|
}
|
|
|
|
// SetError sets the error and resets the ID.
|
|
func (ctx *Context) SetError(err error) {
|
|
ctx.mu.Lock()
|
|
defer ctx.mu.Unlock()
|
|
|
|
ctx.id = ""
|
|
ctx.err = err
|
|
}
|
|
|
|
// Error returns the error.
|
|
func (ctx *Context) Error() error {
|
|
ctx.mu.RLock()
|
|
defer ctx.mu.RUnlock()
|
|
|
|
return ctx.err
|
|
}
|