2015-12-16 06:57:18 +03:00
// Copyright 2015 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.
package user
import (
2016-11-11 12:39:44 +03:00
api "code.gitea.io/sdk/gitea"
2015-12-16 06:57:18 +03:00
2016-11-10 19:24:48 +03:00
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers/api/v1/convert"
2015-12-16 06:57:18 +03:00
)
2016-11-24 10:04:31 +03:00
// ListEmails list all the emails of mine
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#list-email-addresses-for-a-user
2016-03-14 01:49:16 +03:00
func ListEmails ( ctx * context . APIContext ) {
2016-07-23 20:08:22 +03:00
emails , err := models . GetEmailAddresses ( ctx . User . ID )
2015-12-16 06:57:18 +03:00
if err != nil {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "GetEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
return
}
apiEmails := make ( [ ] * api . Email , len ( emails ) )
for i := range emails {
2016-03-14 06:20:22 +03:00
apiEmails [ i ] = convert . ToEmail ( emails [ i ] )
2015-12-16 06:57:18 +03:00
}
ctx . JSON ( 200 , & apiEmails )
}
2016-11-24 10:04:31 +03:00
// AddEmail add email for me
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#add-email-addresses
2016-03-14 01:49:16 +03:00
func AddEmail ( ctx * context . APIContext , form api . CreateEmailOption ) {
2015-12-16 06:57:18 +03:00
if len ( form . Emails ) == 0 {
ctx . Status ( 422 )
return
}
emails := make ( [ ] * models . EmailAddress , len ( form . Emails ) )
for i := range form . Emails {
emails [ i ] = & models . EmailAddress {
2016-07-23 20:08:22 +03:00
UID : ctx . User . ID ,
2015-12-16 06:57:18 +03:00
Email : form . Emails [ i ] ,
IsActivated : ! setting . Service . RegisterEmailConfirm ,
}
}
if err := models . AddEmailAddresses ( emails ) ; err != nil {
if models . IsErrEmailAlreadyUsed ( err ) {
2016-03-14 01:49:16 +03:00
ctx . Error ( 422 , "" , "Email address has been used: " + err . ( models . ErrEmailAlreadyUsed ) . Email )
2015-12-16 06:57:18 +03:00
} else {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "AddEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
}
return
}
apiEmails := make ( [ ] * api . Email , len ( emails ) )
for i := range emails {
2016-03-14 06:20:22 +03:00
apiEmails [ i ] = convert . ToEmail ( emails [ i ] )
2015-12-16 06:57:18 +03:00
}
ctx . JSON ( 201 , & apiEmails )
}
2016-11-24 10:04:31 +03:00
// DeleteEmail delete email
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#delete-email-addresses
2016-03-14 01:49:16 +03:00
func DeleteEmail ( ctx * context . APIContext , form api . CreateEmailOption ) {
2015-12-16 06:57:18 +03:00
if len ( form . Emails ) == 0 {
ctx . Status ( 204 )
return
}
emails := make ( [ ] * models . EmailAddress , len ( form . Emails ) )
for i := range form . Emails {
emails [ i ] = & models . EmailAddress {
Email : form . Emails [ i ] ,
2016-12-15 11:49:06 +03:00
UID : ctx . User . ID ,
2015-12-16 06:57:18 +03:00
}
}
if err := models . DeleteEmailAddresses ( emails ) ; err != nil {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "DeleteEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
return
}
ctx . Status ( 204 )
}