2014-06-25 08:44:48 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
2014-06-07 09:27:24 +04:00
package org
import (
2014-07-26 10:28:04 +04:00
"github.com/gogits/gogs/models"
2014-06-25 08:44:48 +04:00
"github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log"
2014-06-07 09:27:24 +04:00
"github.com/gogits/gogs/modules/middleware"
2014-09-14 21:35:22 +04:00
"github.com/gogits/gogs/modules/setting"
2014-06-25 08:44:48 +04:00
)
const (
2014-08-14 10:12:21 +04:00
HOME base . TplName = "org/home"
CREATE base . TplName = "org/create"
2014-06-07 09:27:24 +04:00
)
2014-07-26 10:28:04 +04:00
func Home ( ctx * middleware . Context ) {
2014-08-14 10:12:21 +04:00
org := ctx . Org . Organization
2014-08-16 12:21:17 +04:00
ctx . Data [ "Title" ] = org . FullName
2014-06-28 23:43:25 +04:00
2014-08-14 10:12:21 +04:00
repos , err := models . GetRepositories ( org . Id , ctx . IsSigned && org . IsOrgMember ( ctx . User . Id ) )
2014-06-28 23:43:25 +04:00
if err != nil {
2014-08-11 07:11:18 +04:00
ctx . Handle ( 500 , "GetRepositories" , err )
2014-06-28 23:43:25 +04:00
return
}
2014-08-14 10:12:21 +04:00
ctx . Data [ "Repos" ] = repos
2014-06-28 23:43:25 +04:00
if err = org . GetMembers ( ) ; err != nil {
2014-08-11 07:11:18 +04:00
ctx . Handle ( 500 , "GetMembers" , err )
2014-06-28 23:43:25 +04:00
return
}
ctx . Data [ "Members" ] = org . Members
if err = org . GetTeams ( ) ; err != nil {
2014-08-11 07:11:18 +04:00
ctx . Handle ( 500 , "GetTeams" , err )
2014-06-28 23:43:25 +04:00
return
}
ctx . Data [ "Teams" ] = org . Teams
ctx . HTML ( 200 , HOME )
2014-06-07 09:27:24 +04:00
}
2014-06-22 12:53:46 +04:00
2014-07-27 07:53:16 +04:00
func Create ( ctx * middleware . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "new_org" )
ctx . HTML ( 200 , CREATE )
2014-06-25 08:44:48 +04:00
}
2014-07-27 07:53:16 +04:00
func CreatePost ( ctx * middleware . Context , form auth . CreateOrgForm ) {
ctx . Data [ "Title" ] = ctx . Tr ( "new_org" )
2014-06-25 08:44:48 +04:00
if ctx . HasError ( ) {
2014-07-27 07:53:16 +04:00
ctx . HTML ( 200 , CREATE )
2014-06-25 08:44:48 +04:00
return
}
org := & models . User {
Name : form . OrgName ,
Email : form . Email ,
2014-07-27 07:53:16 +04:00
IsActive : true ,
2014-06-25 08:44:48 +04:00
Type : models . ORGANIZATION ,
}
var err error
if org , err = models . CreateOrganization ( org , ctx . User ) ; err != nil {
switch err {
case models . ErrUserAlreadyExist :
ctx . Data [ "Err_OrgName" ] = true
2014-07-27 07:53:16 +04:00
ctx . RenderWithErr ( ctx . Tr ( "form.org_name_been_taken" ) , CREATE , & form )
2014-06-25 08:44:48 +04:00
case models . ErrEmailAlreadyUsed :
ctx . Data [ "Err_Email" ] = true
2014-07-27 07:53:16 +04:00
ctx . RenderWithErr ( ctx . Tr ( "form.email_been_used" ) , CREATE , & form )
2014-06-25 08:44:48 +04:00
case models . ErrUserNameIllegal :
ctx . Data [ "Err_OrgName" ] = true
2014-07-27 07:53:16 +04:00
ctx . RenderWithErr ( ctx . Tr ( "form.illegal_org_name" ) , CREATE , & form )
2014-06-25 08:44:48 +04:00
default :
2014-07-27 07:53:16 +04:00
ctx . Handle ( 500 , "CreateUser" , err )
2014-06-25 08:44:48 +04:00
}
return
}
2014-07-27 07:53:16 +04:00
log . Trace ( "Organization created: %s" , org . Name )
2014-06-25 08:44:48 +04:00
2014-09-14 21:35:22 +04:00
ctx . Redirect ( setting . AppRootSubUrl + "/org/" + form . OrgName + "/dashboard" )
2014-06-23 07:40:49 +04:00
}