Skip to content
This repository was archived by the owner on Apr 22, 2022. It is now read-only.

Commit d37115d

Browse files
author
taleksashina
committed
localize e-mail messages
1 parent fec3088 commit d37115d

File tree

10 files changed

+102
-22
lines changed

10 files changed

+102
-22
lines changed

src/main/java/authentication/FrameworkConfiguration.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package authentication;
22

33
import java.io.IOException;
4+
import java.util.HashMap;
5+
import java.util.Locale;
6+
import java.util.MissingResourceException;
7+
import java.util.ResourceBundle;
48

59
import javax.servlet.ServletContext;
610

711
import org.apache.jena.riot.RiotException;
812

913
import rdf.SecureRdfStoreManagerImpl;
1014
import util.EmailSender;
15+
import util.Localizer;
1116
import util.SSLEmailSender;
1217
import util.TLSEmailSender;
1318
import accounts.FrameworkUserManager;
@@ -50,6 +55,8 @@ public class FrameworkConfiguration {
5055

5156
private static FrameworkConfiguration instance;
5257

58+
private HashMap<Locale, Localizer> localizers = new HashMap<Locale, Localizer>();
59+
5360
/**
5461
*
5562
* @param context
@@ -360,4 +367,30 @@ public void setFrameworkUri(String frameworkUri) {
360367
this.frameworkUri = frameworkUri;
361368
}
362369

370+
public Localizer getLocalizer(Locale locale) {
371+
Localizer localizer = localizers.get(locale);
372+
if (localizer==null) {
373+
try {
374+
final ResourceBundle bundle = ResourceBundle.getBundle("resources/locale/generator", locale);
375+
localizer = new Localizer() {
376+
@Override
377+
public String localize(String str) {
378+
try {
379+
return bundle.getString(str);
380+
} catch (Exception e) {
381+
return str;
382+
}
383+
}
384+
};
385+
} catch (MissingResourceException e) {
386+
localizer = new Localizer() {
387+
public String localize(String str) {
388+
return str;
389+
}
390+
};
391+
}
392+
localizers.put(locale, localizer);
393+
}
394+
return localizer;
395+
}
363396
}

src/main/java/authentication/web/AuthenticationServlet.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.PrintWriter;
66
import java.util.ArrayList;
77
import java.util.Collection;
8+
import java.util.Locale;
89
import java.util.UUID;
910

1011
import javax.mail.MessagingException;
@@ -19,6 +20,7 @@
1920

2021
import util.EmailSender;
2122
import util.HttpUtils;
23+
import util.Localizer;
2224
import util.RandomStringGenerator;
2325
import accounts.FrameworkUserManager;
2426
import accounts.UserProfile;
@@ -67,6 +69,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
6769
throws ServletException, IOException {
6870
String mode = request.getParameter("mode");
6971

72+
String language = request.getParameter("lang");
73+
if (language==null)
74+
language = "en";
75+
Locale locale = new Locale(language);
76+
7077
PrintWriter out = response.getWriter();
7178

7279
if ("login".equals(mode)) {
@@ -149,11 +156,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
149156
try {
150157
frameworkUserManager.createUser(username, password, email);
151158

152-
EmailSender emailSender = FrameworkConfiguration.getInstance(getServletContext())
153-
.getDefaultEmailSender();
159+
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance(getServletContext());
160+
Localizer localizer = frameworkConfiguration.getLocalizer(locale);
161+
EmailSender emailSender = frameworkConfiguration.getDefaultEmailSender();
154162

155-
emailSender.send(email, "Ontos LDIW for ACC registration", "Your login: " + username + ", password: "
156-
+ password);
163+
emailSender.send(email, localizer.localize("email.subject.registration"), localizer.localize("login") + ": " + username + "\n" + localizer.localize("password") + ": " + password);
157164
String responseStr = "{\"message\" : \"Your password will be sent to your e-mail address "
158165
+ email + " \"}";
159166
response.getWriter().print(responseStr);
@@ -197,8 +204,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
197204
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "User profile " + username + " not found");
198205
return;
199206
}
200-
EmailSender emailSender = FrameworkConfiguration.getInstance(getServletContext()).getDefaultEmailSender();
201-
emailSender.send(userProfile.getEmail(), "Ontos LDIW for ACC change password", "Your password for the Linked Data Information Workbench account " + username + " was changed.");
207+
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance(getServletContext());
208+
Localizer localizer = frameworkConfiguration.getLocalizer(locale);
209+
EmailSender emailSender = frameworkConfiguration.getDefaultEmailSender();
210+
emailSender.send(userProfile.getEmail(), localizer.localize("email.subject.passwordChanged"), localizer.localize("email.message.passwordChanged") + " " + username);
202211

203212
String responseStr = "{\"message\" : \"Your password was changed\"}";
204213
response.getWriter().print(responseStr);
@@ -225,10 +234,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
225234
frameworkUserManager.setPassword(username, password);
226235

227236
// send new password to user
228-
EmailSender emailSender = FrameworkConfiguration.getInstance(getServletContext())
229-
.getDefaultEmailSender();
230-
emailSender.send(userProfile.getEmail(), "Ontos LDIW for ACC restore password", "Your login: "
231-
+ username + ", password: " + password);
237+
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance(getServletContext());
238+
Localizer localizer = frameworkConfiguration.getLocalizer(locale);
239+
EmailSender emailSender = frameworkConfiguration.getDefaultEmailSender();
240+
emailSender.send(userProfile.getEmail(), localizer.localize("email.subject.passwordRestored"), localizer.localize("login") + ": "
241+
+ username + "\n" + localizer.localize("password") + ": " + password);
232242
String responseStr = "{\"message\" : \"New password will be sent to your e-mail address "
233243
+ userProfile.getEmail() + " \"}";
234244
response.getWriter().print(responseStr);

src/main/java/authentication/web/UserManagerServlet.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.ArrayList;
66
import java.util.Collection;
77
import java.util.Iterator;
8+
import java.util.Locale;
89

910
import javax.mail.MessagingException;
1011
import javax.servlet.ServletConfig;
@@ -18,6 +19,7 @@
1819

1920
import util.EmailSender;
2021
import util.HttpUtils;
22+
import util.Localizer;
2123
import util.RandomStringGenerator;
2224
import accounts.FrameworkUserManager;
2325
import accounts.UserProfileExtended;
@@ -137,10 +139,14 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S
137139

138140
EmailSender emailSender = null;
139141
try {
140-
emailSender = FrameworkConfiguration.getInstance(getServletContext())
141-
.getDefaultEmailSender();
142-
emailSender.send(email, "Ontos LDIW for ACC registration", "Your login: " + username + ", password: "
143-
+ password);
142+
String language = req.getParameter("lang");
143+
if (language==null)
144+
language = "en";
145+
Locale locale = new Locale(language);
146+
FrameworkConfiguration frameworkConfiguration = FrameworkConfiguration.getInstance(getServletContext());
147+
Localizer localizer = frameworkConfiguration.getLocalizer(locale);
148+
emailSender = frameworkConfiguration.getDefaultEmailSender();
149+
emailSender.send(email, localizer.localize("email.subject.registration"), localizer.localize("login") + ": " + username + "\n" + localizer.localize("password") + ": " + password);
144150
} catch (MessagingException e) {
145151
throw new ServletException("Failed to send email to " + email + " using " + emailSender, e);
146152
} catch (Exception e) {

src/main/java/util/Localizer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package util;
2+
3+
/**
4+
* Created by taleksaschina on 18.07.2014.
5+
*/
6+
public interface Localizer {
7+
String localize(String str);
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
login=Login
2+
password=Password
3+
email.subject.registration=Ontos LDIW for ACC registration
4+
email.subject.passwordChanged=Ontos LDIW for ACC password changed
5+
email.message.passwordChanged=Password was changed for your Linked Data Information Workbench account
6+
email.subject.passwordRestored=Ontos LDIW for ACC restore password
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
login=Login
2+
password=Password
3+
email.subject.registration=Ontos LDIW for ACC registration
4+
email.subject.passwordChanged=Ontos LDIW for ACC password changed
5+
email.message.passwordChanged=Password was changed for your Linked Data Information Workbench account
6+
email.subject.passwordRestored=Ontos LDIW for ACC restore password
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
login=Логин
2+
password=Пароль
3+
email.subject.registration=Ontos LDIW для ACC регистрация
4+
email.subject.passwordChanged=Ontos LDIW для ACC смена пароля
5+
email.message.passwordChanged=Пароль был изменен для Вашего аккаунта Linked Data Information Workbench
6+
email.subject.passwordRestored=Ontos LDIW для ACC восстановение пароля

src/main/webapp/js/admin/users/users-controller.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
function UsersCtrl($scope, $http, flash, Helpers, AccountService) {
3+
function UsersCtrl($scope, $http, flash, Helpers, AccountService, localize) {
44
var emptyUser = { profile: { accountURI:"", username:"", email:""}
55
, ownGraphs: []
66
, readableGraphs: []
@@ -87,7 +87,8 @@ function UsersCtrl($scope, $http, flash, Helpers, AccountService) {
8787
var parameters = {
8888
mode: newUser ? "create" : "update",
8989
user: JSON.stringify($scope.user),
90-
curuser: AccountService.getUsername()
90+
curuser: AccountService.getUsername(),
91+
lang: localize.language
9192
};
9293
$http({
9394
url: "UserManagerServlet",

src/main/webapp/js/services/login-service.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
var module = angular.module('app.login-service', []);
44

5-
module.factory("LoginService", function ($http, $location, $cookieStore, AccountService, ConfigurationService, Base64, flash, ServerErrorResponse) {
5+
module.factory("LoginService", function ($http, $location, $cookieStore, AccountService, ConfigurationService, Base64, flash, ServerErrorResponse, localize) {
66

77
var login = function (username, password) {
88

@@ -81,7 +81,8 @@ module.factory("LoginService", function ($http, $location, $cookieStore, Account
8181
var postData = {
8282
username: username,
8383
email: email,
84-
mode: "create"
84+
mode: "create",
85+
lang: localize.language
8586
};
8687
return $http({
8788
url: "AuthenticationServlet",
@@ -96,7 +97,8 @@ module.factory("LoginService", function ($http, $location, $cookieStore, Account
9697
username: AccountService.getUsername(),
9798
oldPassword: oldPassword,
9899
newPassword: newPassword,
99-
mode: "changePassword"
100+
mode: "changePassword",
101+
lang: localize.language
100102
};
101103
return $http({
102104
url: "AuthenticationServlet",
@@ -109,7 +111,8 @@ module.factory("LoginService", function ($http, $location, $cookieStore, Account
109111
var restorePassword = function (username) {
110112
var postData = {
111113
username: username,
112-
mode: "restorePassword"
114+
mode: "restorePassword",
115+
lang: localize.language
113116
};
114117
return $http({
115118
url: "AuthenticationServlet",

src/main/webapp/js/services/users-service.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
var module = angular.module('app.users-service', []);
44

5-
module.factory("UsersService", function($http, Config, AccountService) {
5+
module.factory("UsersService", function($http, Config, AccountService, localize) {
66
var users = [];
77
var roles = {};
88

@@ -205,7 +205,8 @@ module.factory("UsersService", function($http, Config, AccountService) {
205205
var parameters = {
206206
mode: "create",
207207
user: JSON.stringify(user),
208-
curuser: AccountService.getUsername()
208+
curuser: AccountService.getUsername(),
209+
lang: localize.language
209210
};
210211
return $http({
211212
url: "UserManagerServlet",

0 commit comments

Comments
 (0)