finish new user function

pull/144/head
Henrique Dias 2017-06-25 12:53:49 +01:00
parent 2ee4d9622c
commit 4fa7426b99
No known key found for this signature in database
GPG Key ID: 936F5EB68D786730
1 changed files with 25 additions and 3 deletions

View File

@ -10,6 +10,11 @@ import (
"golang.org/x/net/webdav"
)
var (
// ErrDuplicated occurs when you try to create a user that already exists.
ErrDuplicated = errors.New("Duplicated user")
)
// FileManager is a file manager instance.
type FileManager struct {
*user
@ -88,7 +93,7 @@ type Rule struct {
type CommandFunc func(r *http.Request, c *FileManager, u *user) error
func New() *FileManager {
func New(scope string) *FileManager {
m := &FileManager{
user: &user{
AllowCommands: true,
@ -111,7 +116,7 @@ func New() *FileManager {
},
}
m.SetScope(".", "")
m.SetScope(scope, "")
m.SetBaseURL("/")
m.SetWebDavURL("/webdav")
@ -192,8 +197,25 @@ func (m *FileManager) SetScope(scope string, username string) error {
return nil
}
func (m *FileManager) NewUser(name string) {
// NewUser creates a new user on a File Manager struct
// which inherits its configuration from the main user.
func (m *FileManager) NewUser(username string) error {
if _, ok := m.Users[username]; ok {
return ErrDuplicated
}
m.Users[username] = &user{
scope: m.user.scope,
fileSystem: m.user.fileSystem,
handler: m.user.handler,
Rules: m.user.Rules,
AllowNew: m.user.AllowNew,
AllowEdit: m.user.AllowEdit,
AllowCommands: m.user.AllowCommands,
Commands: m.user.Commands,
}
return nil
}
// Allowed checks if the user has permission to access a directory/file.