access.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package models
  5. import (
  6. "strings"
  7. "time"
  8. )
  9. // Access types.
  10. const (
  11. AU_READABLE = iota + 1
  12. AU_WRITABLE
  13. )
  14. // Access represents the accessibility of user to repository.
  15. type Access struct {
  16. Id int64
  17. UserName string `xorm:"unique(s)"`
  18. RepoName string `xorm:"unique(s)"`
  19. Mode int `xorm:"unique(s)"`
  20. Created time.Time `xorm:"created"`
  21. }
  22. // AddAccess adds new access record.
  23. func AddAccess(access *Access) error {
  24. access.UserName = strings.ToLower(access.UserName)
  25. access.RepoName = strings.ToLower(access.RepoName)
  26. _, err := orm.Insert(access)
  27. return err
  28. }
  29. // UpdateAccess updates access information.
  30. func UpdateAccess(access *Access) error {
  31. access.UserName = strings.ToLower(access.UserName)
  32. access.RepoName = strings.ToLower(access.RepoName)
  33. _, err := orm.Id(access.Id).Update(access)
  34. return err
  35. }
  36. // HasAccess returns true if someone can read or write to given repository.
  37. func HasAccess(userName, repoName string, mode int) (bool, error) {
  38. return orm.Get(&Access{
  39. Id: 0,
  40. UserName: strings.ToLower(userName),
  41. RepoName: strings.ToLower(repoName),
  42. Mode: mode,
  43. })
  44. }