merge master

This commit is contained in:
root 2016-06-02 13:41:52 +08:00
commit d66a8f913e
8 changed files with 28 additions and 19 deletions

View File

@ -61,14 +61,18 @@ func (l *LogAPI) Get() {
var linesNum int var linesNum int
lines := l.GetString("lines") lines := l.GetString("lines")
if len(lines) == 0 && len(startTime) == 0 && len(endTime) == 0 { if len(lines) != 0 {
linesNum = 10
} else if len(lines) != 0 {
linesNum, err = strconv.Atoi(lines) linesNum, err = strconv.Atoi(lines)
if err != nil { if err != nil {
log.Errorf("Get parameters error--lines, err: %v", err) log.Errorf("Get parameters error--lines, err: %v", err)
l.CustomAbort(http.StatusBadRequest, "bad request of lines") l.CustomAbort(http.StatusBadRequest, "bad request of lines")
} }
if linesNum <= 0 {
log.Warning("lines must be a positive integer")
l.CustomAbort(http.StatusBadRequest, "lines is 0 or negative")
}
} else if len(startTime) == 0 && len(endTime) == 0 {
linesNum = 10
} }
var logList []models.AccessLog var logList []models.AccessLog

View File

@ -289,8 +289,8 @@ func (ra *RepositoryAPI) getUsername() (string, error) {
return "", nil return "", nil
} }
//GetTopTenRepos handles request GET /api/repositories/toprepos //GetTopRepos handles request GET /api/repositories/top
func (ra *RepositoryAPI) GetTopTenRepos() { func (ra *RepositoryAPI) GetTopRepos() {
var err error var err error
var countNum int var countNum int
count := ra.GetString("count") count := ra.GetString("count")
@ -307,7 +307,7 @@ func (ra *RepositoryAPI) GetTopTenRepos() {
ra.CustomAbort(http.StatusBadRequest, "count is 0 or negative") ra.CustomAbort(http.StatusBadRequest, "count is 0 or negative")
} }
} }
repos, err := dao.GetTop10Repos(countNum) repos, err := dao.GetTopRepos(countNum)
if err != nil { if err != nil {
log.Errorf("error occured in get top 10 repos: %v", err) log.Errorf("error occured in get top 10 repos: %v", err)
ra.CustomAbort(http.StatusInternalServerError, "internal server error") ra.CustomAbort(http.StatusInternalServerError, "internal server error")

View File

@ -201,6 +201,16 @@ func (ua *UserAPI) Post() {
ua.RenderError(http.StatusConflict, "username has already been used!") ua.RenderError(http.StatusConflict, "username has already been used!")
return return
} }
emailExist, err := dao.UserExists(user, "email")
if err != nil {
log.Errorf("Error occurred in change user profile: %v", err)
ua.CustomAbort(http.StatusInternalServerError, "Internal error.")
}
if emailExist {
log.Warning("email has already been used!")
ua.RenderError(http.StatusConflict, "email has already been used!")
return
}
userID, err := dao.Register(user) userID, err := dao.Register(user)
if err != nil { if err != nil {
log.Errorf("Error occurred in Register: %v", err) log.Errorf("Error occurred in Register: %v", err)
@ -308,6 +318,8 @@ func commonValidate(user models.User) error {
if m, _ := regexp.MatchString(`^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$`, user.Email); !m { if m, _ := regexp.MatchString(`^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$`, user.Email); !m {
return fmt.Errorf("Email with illegal format.") return fmt.Errorf("Email with illegal format.")
} }
} else {
return fmt.Errorf("Email can't be empty")
} }
if isIllegalLength(user.Realname, 0, 20) { if isIllegalLength(user.Realname, 0, 20) {

View File

@ -111,6 +111,9 @@ func (l *Auth) Authenticate(m models.AuthModel) (*models.User, error) {
u.Realname = m.Principal u.Realname = m.Principal
u.Password = "12345678AbC" u.Password = "12345678AbC"
u.Comment = "registered from LDAP." u.Comment = "registered from LDAP."
if u.Email == "" {
u.Email = u.Username + "@vmware.com"
}
userID, err := dao.Register(u) userID, err := dao.Register(u)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -18,8 +18,6 @@ package dao
import ( import (
"strings" "strings"
"github.com/astaxie/beego/orm"
"github.com/vmware/harbor/models" "github.com/vmware/harbor/models"
"github.com/vmware/harbor/utils/log" "github.com/vmware/harbor/utils/log"
) )
@ -148,8 +146,8 @@ func GetRecentLogs(userID, linesNum int, startTime, endTime string) ([]models.Ac
return recentLogList, nil return recentLogList, nil
} }
//GetTop10Repos return top 10 accessed public repos //GetTopRepos return top accessed public repos
func GetTop10Repos(countNum int) ([]orm.ParamsList, error) { func GetTopRepos(countNum int) ([]orm.ParamsList, error) {
o := GetOrmer() o := GetOrmer()

View File

@ -25,10 +25,6 @@ import (
// Register is used for user to register, the password is encrypted before the record is inserted into database. // Register is used for user to register, the password is encrypted before the record is inserted into database.
func Register(user models.User) (int64, error) { func Register(user models.User) (int64, error) {
//when register from ldap, email may be empty
if user.Email == "" {
user.Email = user.Username + "@vmware.com"
}
o := GetOrmer() o := GetOrmer()
p, err := o.Raw("insert into user (username, password, realname, email, comment, salt, sysadmin_flag, creation_time, update_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)").Prepare() p, err := o.Raw("insert into user (username, password, realname, email, comment, salt, sysadmin_flag, creation_time, update_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)").Prepare()
if err != nil { if err != nil {

View File

@ -232,10 +232,6 @@ func DeleteUser(userID int) error {
// ChangeUserProfile ... // ChangeUserProfile ...
func ChangeUserProfile(user models.User) error { func ChangeUserProfile(user models.User) error {
//email is null is permitted
if user.Email == "" {
user.Email = user.Username + "@vmware.com"
}
o := GetOrmer() o := GetOrmer()
if _, err := o.Update(&user, "Email", "Realname", "Comment"); err != nil { if _, err := o.Update(&user, "Email", "Realname", "Comment"); err != nil {
log.Errorf("update user failed, error: %v", err) log.Errorf("update user failed, error: %v", err)

View File

@ -64,7 +64,7 @@ func initRouters() {
beego.Router("/api/repositories", &api.RepositoryAPI{}) beego.Router("/api/repositories", &api.RepositoryAPI{})
beego.Router("/api/repositories/tags", &api.RepositoryAPI{}, "get:GetTags") beego.Router("/api/repositories/tags", &api.RepositoryAPI{}, "get:GetTags")
beego.Router("/api/repositories/manifests", &api.RepositoryAPI{}, "get:GetManifests") beego.Router("/api/repositories/manifests", &api.RepositoryAPI{}, "get:GetManifests")
beego.Router("/api/repositories/top", &api.RepositoryAPI{}, "get:GetTopTenRepos") beego.Router("/api/repositories/top", &api.RepositoryAPI{}, "get:GetTopRepos")
beego.Router("api/logs", &api.LogAPI{}) beego.Router("api/logs", &api.LogAPI{})
//external service that hosted on harbor process: //external service that hosted on harbor process: