pam.go 688 B

1234567891011121314151617181920212223242526272829
  1. // +build pam
  2. // Copyright 2014 The Gogs Authors. All rights reserved.
  3. // Use of this source code is governed by a MIT-style
  4. // license that can be found in the LICENSE file.
  5. package pam
  6. import (
  7. "github.com/msteinert/pam"
  8. "github.com/pkg/errors"
  9. )
  10. func (c *Config) doAuth(login, password string) error {
  11. t, err := pam.StartFunc(c.ServiceName, login, func(s pam.Style, msg string) (string, error) {
  12. switch s {
  13. case pam.PromptEchoOff:
  14. return password, nil
  15. case pam.PromptEchoOn, pam.ErrorMsg, pam.TextInfo:
  16. return "", nil
  17. }
  18. return "", errors.Errorf("unrecognized PAM message style: %v - %s", s, msg)
  19. })
  20. if err != nil {
  21. return err
  22. }
  23. return t.Authenticate(0)
  24. }