finish github oauth2 support

This commit is contained in:
skyblue 2014-04-12 01:01:30 +08:00
parent df000245d1
commit dd815ae7b5
5 changed files with 86 additions and 26 deletions

View file

@ -4,7 +4,11 @@
package models
import "errors"
import (
"errors"
"github.com/gogits/gogs/modules/log"
)
// OT: Oauth2 Type
const (
@ -16,17 +20,23 @@ const (
var (
ErrOauth2RecordNotExists = errors.New("not exists oauth2 record")
ErrOauth2NotAssociatedWithUser = errors.New("not associated with user")
ErrOauth2NotExist = errors.New("not exist oauth2")
)
type Oauth2 struct {
Id int64
Uid int64 // userId
Uid int64 `xorm:"unique(s)"` // userId
User *User `xorm:"-"`
Type int `xorm:"pk unique(oauth)"` // twitter,github,google...
Identity string `xorm:"pk unique(oauth)"` // id..
Type int `xorm:"unique(s) unique(oauth)"` // twitter,github,google...
Identity string `xorm:"unique(s) unique(oauth)"` // id..
Token string `xorm:"VARCHAR(200) not null"`
}
func BindUserOauth2(userId, oauthId int64) error {
_, err := orm.Id(oauthId).Update(&Oauth2{Uid: userId})
return err
}
func AddOauth2(oa *Oauth2) (err error) {
if _, err = orm.Insert(oa); err != nil {
return err
@ -47,3 +57,16 @@ func GetOauth2(identity string) (oa *Oauth2, err error) {
oa.User, err = GetUserById(oa.Uid)
return oa, err
}
func GetOauth2ById(id int64) (oa *Oauth2, err error) {
oa = new(Oauth2)
has, err := orm.Id(id).Get(oa)
log.Info("oa: %v", oa)
if err != nil {
return nil, err
}
if !has {
return nil, ErrOauth2NotExist
}
return oa, nil
}