@@ -15,6 +15,7 @@ import (
15
15
"code.gitea.io/gitea/modules/optional"
16
16
"code.gitea.io/gitea/modules/setting"
17
17
"code.gitea.io/gitea/services/context"
18
+ "code.gitea.io/gitea/services/user"
18
19
)
19
20
20
21
const (
@@ -150,3 +151,32 @@ func ActivateEmail(ctx *context.Context) {
150
151
redirect .RawQuery = q .Encode ()
151
152
ctx .Redirect (redirect .String ())
152
153
}
154
+
155
+ // DeleteEmail serves a POST request for delete a user's email
156
+ func DeleteEmail (ctx * context.Context ) {
157
+ u , err := user_model .GetUserByID (ctx , ctx .FormInt64 ("Uid" ))
158
+ if err != nil || u == nil {
159
+ ctx .ServerError ("GetUserByID" , err )
160
+ return
161
+ }
162
+
163
+ email , err := user_model .GetEmailAddressByID (ctx , u .ID , ctx .FormInt64 ("id" ))
164
+ if err != nil || email == nil {
165
+ ctx .ServerError ("GetEmailAddressByID" , err )
166
+ return
167
+ }
168
+
169
+ if err := user .DeleteEmailAddresses (ctx , u , []string {email .Email }); err != nil {
170
+ if user_model .IsErrPrimaryEmailCannotDelete (err ) {
171
+ ctx .Flash .Error (ctx .Tr ("admin.emails.delete_primary_email_error" ))
172
+ ctx .JSONRedirect ("" )
173
+ return
174
+ }
175
+ ctx .ServerError ("DeleteEmailAddresses" , err )
176
+ return
177
+ }
178
+ log .Trace ("Email address deleted: %s %s" , u .Name , email .Email )
179
+
180
+ ctx .Flash .Success (ctx .Tr ("admin.emails.deletion_success" ))
181
+ ctx .JSONRedirect ("" )
182
+ }
0 commit comments