mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 17:37:00 +00:00
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
45fc67ce46
@ -1 +0,0 @@
|
||||
OBP-20001 = El usuario no ha iniciado sesión. ¡Se requiere autenticación!
|
||||
@ -1,8 +1,17 @@
|
||||
api.explorer = Explorador API
|
||||
api_manager = Gestor API
|
||||
introduction = Introducción
|
||||
support = Soporte
|
||||
register = Registrarse
|
||||
logon = Ingresar
|
||||
terms_conditions = Terminos y condiciones
|
||||
privacy_policy = Política de privacidad
|
||||
api_documentation = Documentación API
|
||||
api_host = Host del API
|
||||
api_tester = Evaluador API
|
||||
view_api_explorer = Ver Explorador API
|
||||
get_api_key = Obten llave API
|
||||
|
||||
|
||||
invalid.email.address = Invalid email address
|
||||
password.must.be.set = Password must be set
|
||||
@ -384,4 +393,6 @@ invalid.username=Invalid Username: \
|
||||
your.username.is.not.unique = Your username is not unique. Please enter a different one.
|
||||
# Those 2 messages must have the same output in order to prevent leakage of information
|
||||
user.invitation.is.already.finished = Looks like the invitation link is invalid. Still need help? Please send us a message using API Playground Support.
|
||||
your.secret.link.is.not.valid = Looks like the invitation link is invalid. Still need help? Please send us a message using API Playground Support.
|
||||
your.secret.link.is.not.valid = Looks like the invitation link is invalid. Still need help? Please send us a message using API Playground Support.
|
||||
|
||||
OBP-30001 = El usuario no ha iniciado sesión. ¡Se requiere autenticación!
|
||||
347
obp-api/src/main/resources/i18n/lift-core_zh_CN.properties
Normal file
347
obp-api/src/main/resources/i18n/lift-core_zh_CN.properties
Normal file
@ -0,0 +1,347 @@
|
||||
invalid.email.address = \u65e0\u6548\u7535\u5b50\u90ae\u7bb1\u5730\u5740
|
||||
password.must.be.set = \u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a
|
||||
password.too.short = \u5bc6\u7801\u592a\u77ed
|
||||
passwords.do.not.match = \u5bc6\u7801\u4e0d\u5339\u914d
|
||||
number.required = \u53ea\u80fd\u63d0\u4f9b\u6570\u5b57\u503c
|
||||
ajax.error=\u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25
|
||||
invalid.zip.code = \u65e0\u6548\u90ae\u653f\u7f16\u7801
|
||||
invalid.postal.code = \u65e0\u6548\u90ae\u653f\u7f16\u7801
|
||||
unique.email.address = \u7535\u5b50\u90ae\u7bb1\u5730\u5740\u5df2\u5b58\u5728
|
||||
must.be.logged.in = \u8bf7\u5148\u767b\u5f55
|
||||
already.logged.in = \u5df2\u7ecf\u767b\u5f55\uff0c\u8bf7\u5148\u767b\u51fa
|
||||
login = \u767b\u5f55
|
||||
logout = \u767b\u51fa
|
||||
log.in = \u767b\u5f55
|
||||
log.out = \u767b\u51fa
|
||||
sign.up = \u6ce8\u518c
|
||||
logged.in = \u5df2\u767b\u5f55
|
||||
logout.first = \u8bf7\u5148\u767b\u51fa
|
||||
lost.password = \u5fd8\u8bb0\u5bc6\u7801
|
||||
reset.password = \u91cd\u7f6e\u5bc6\u7801
|
||||
change.password = \u4fee\u6539\u5bc6\u7801
|
||||
password.changed = \u5bc6\u7801\u5df2\u4fee\u6539
|
||||
edit.user = \u8bbe\u7f6e\u7528\u6237
|
||||
validate.user = \u6821\u9a8c\u7528\u6237
|
||||
edit.profile = \u4fee\u6539\u8d44\u6599
|
||||
sign.up.confirmation = \u6ce8\u518c\u4fe1\u606f\u786e\u8ba4
|
||||
sign.up.message = \u6ce8\u518c\u6210\u529f\uff0c\u7cfb\u7edf\u4f1a\u53d1\u9001\u4e00\u5c01\u5e10\u53f7\u9a8c\u8bc1\u90ae\u4ef6\u5230\u4f60\u7684\u7535\u5b50\u90ae\u7bb1
|
||||
sign.up.validation.link=\u70b9\u51fb\u6b64\u94fe\u63a5\u5b8c\u6210\u6ce8\u518c\uff1a
|
||||
welcome = \u6b22\u8fce
|
||||
account.validated = \u5e10\u53f7\u9a8c\u8bc1\u6210\u529f
|
||||
invalid.validation.link = \u9a8c\u8bc1\u94fe\u63a5\u65e0\u6548
|
||||
account.validation.error = \u60a8\u7684\u5e10\u53f7\u8fd8\u6ca1\u9a8c\u8bc1\uff0c\u8bf7\u68c0\u67e5\u60a8\u7684\u90ae\u7bb1\u83b7\u5f97\u9a8c\u8bc1\u94fe\u63a5
|
||||
invalid.credentials = \u7528\u6237\u540d/\u5bc6\u7801\u9519\u8bef
|
||||
enter.email = \u8f93\u5165\u4e00\u4e2a\u7535\u5b50\u90ae\u7bb1\u5730\u5740\uff0c\u6211\u4eec\u4f1a\u53d1\u9001\u4e00\u4e2a\u5bc6\u7801\u91cd\u7f6e\u94fe\u63a5\u5230\u8be5\u90ae\u7bb1
|
||||
email.address = \u7535\u5b50\u90ae\u7bb1\u5730\u5740
|
||||
reset.password.confirmation = \u91cd\u7f6e\u5bc6\u7801\u4fe1\u606f\u786e\u8ba4
|
||||
dear = \u5c0a\u656c\u7684
|
||||
click.reset.link = \u70b9\u51fb\u6b64\u94fe\u63a5\u91cd\u7f6e\u60a8\u7684\u5bc6\u7801
|
||||
thank.you = \u8c22\u8c22
|
||||
reset.password.request = \u8bf7\u6c42\u5bc6\u7801\u91cd\u7f6e
|
||||
password.reset.email.sent = \u5bc6\u7801\u91cd\u7f6e\u90ae\u4ef6\u5df2\u53d1\u9001
|
||||
account.validation.resent = \u91cd\u53d1\u5e10\u53f7\u9a8c\u8bc1\u90ae\u4ef6
|
||||
email.address.not.found = \u7535\u5b50\u90ae\u7bb1\u5730\u5740\u4e0d\u5b58\u5728
|
||||
send.it = \u53d1\u9001
|
||||
reset.your.password = \u91cd\u7f6e\u5bc6\u7801
|
||||
enter.your.new.password = \u8f93\u5165\u65b0\u5bc6\u7801
|
||||
repeat.your.new.password = \u8f93\u5165\u65b0\u5bc6\u7801\uff08\u786e\u8ba4\uff09
|
||||
set.password = \u8bbe\u7f6e\u5bc6\u7801
|
||||
password.link.invalid = \u5bc6\u7801\u91cd\u7f6e\u94fe\u7ed3\u65e0\u6548
|
||||
wrong.old.password = \u539f\u5bc6\u7801\u9519\u8bef
|
||||
old.password = \u539f\u5bc6\u7801
|
||||
new.password = \u65b0\u5bc6\u7801
|
||||
repeat.password = \u65b0\u5bc6\u7801\u786e\u8ba4
|
||||
repeat = \u786e\u8ba4
|
||||
edit = \u4fee\u6539
|
||||
cancel = \u53d6\u6d88
|
||||
ok = \u786e\u5b9a
|
||||
change = \u4fee\u6539
|
||||
password = \u5bc6\u7801
|
||||
recover.password = \u6062\u590d\u5bc6\u7801
|
||||
profile.updated = \u60a8\u7684\u8d44\u6599\u4fee\u6539\u6210\u529f
|
||||
male = \u7537
|
||||
female = \u5973
|
||||
first.name = \u540d
|
||||
last.name = \u59d3
|
||||
locale = \u533a\u57df
|
||||
time.zone = \u65f6\u533a
|
||||
msg.notice = \u4fe1\u606f
|
||||
msg.warning = \u8b66\u544a
|
||||
msg.error = \u9519\u8bef
|
||||
crudify.menu.view.displayName=\u67e5\u770b %s
|
||||
crudify.menu.edit.displayName=\u8bbe\u7f6e %s
|
||||
crudify.menu.delete.displayName=\u5220\u9664 %s
|
||||
country_1 = \u7f8e\u56fd
|
||||
country_2 = \u963f\u5bcc\u6c57
|
||||
country_3 = \u963f\u5c14\u5df4\u5c3c\u4e9a
|
||||
country_4 = \u963f\u5c14\u53ca\u5229\u4e9a
|
||||
country_5 = \u5b89\u9053\u5c14
|
||||
country_6 = \u5b89\u54e5\u62c9
|
||||
country_7 = \u5b89\u63d0\u74dc\u548c\u5df4\u5e03\u8fbe
|
||||
country_8 = \u963f\u6839\u5ef7
|
||||
country_9 = \u4e9a\u7f8e\u5c3c\u4e9a
|
||||
country_10 = \u6fb3\u5927\u5229\u4e9a
|
||||
country_11 = \u5965\u5730\u5229
|
||||
country_12 = \u963f\u585e\u62dc\u7586
|
||||
country_13 = \u5df4\u54c8\u9a6c
|
||||
country_14 = \u5df4\u6797
|
||||
country_15 = \u5b5f\u52a0\u62c9\u56fd
|
||||
country_16 = \u5df4\u5df4\u591a\u65af
|
||||
country_17 = \u767d\u4fc4\u7f57\u65af
|
||||
country_18 = \u6bd4\u5229\u65f6
|
||||
country_19 = \u4f2f\u5229\u5179
|
||||
country_20 = \u8d1d\u5b81
|
||||
country_21 = \u4e0d\u4e39
|
||||
country_22 = \u73bb\u5229\u7ef4\u4e9a
|
||||
country_23 = \u6ce2\u65af\u5c3c\u4e9a\u548c\u9ed1\u585e\u54e5\u7ef4
|
||||
country_24 = \u535a\u8328\u74e6\u7eb3
|
||||
country_25 = \u5df4\u897f
|
||||
country_26 = \u6587\u83b1
|
||||
country_27 = \u4fdd\u52a0\u5229\u4e9a
|
||||
country_28 = \u5e03\u57fa\u7eb3\u6cd5\u7d22
|
||||
country_29 = \u5e03\u9686\u8fea
|
||||
country_30 = \u67ec\u57d4\u5be8
|
||||
country_31 = \u5580\u9ea6\u9686
|
||||
country_32 = \u52a0\u62ff\u5927
|
||||
country_33 = \u4f5b\u5f97\u89d2
|
||||
country_34 = \u4e2d\u975e\u5171\u548c\u56fd
|
||||
country_35 = \u4e4d\u5f97
|
||||
country_36 = \u667a\u5229
|
||||
country_37 = \u4e2d\u56fd
|
||||
country_38 = \u54e5\u4f26\u6bd4\u4e9a
|
||||
country_39 = \u79d1\u6469\u7f57
|
||||
country_40 = \u521a\u679c\u6c11\u4e3b\u5171\u548c\u56fd
|
||||
country_41 = \u521a\u679c\u5171\u548c\u56fd
|
||||
country_42 = \u54e5\u65af\u8fbe\u9ece\u52a0
|
||||
country_43 = \u79d1\u7279\u8fea\u74e6
|
||||
country_44 = \u514b\u7f57\u5730\u4e9a
|
||||
country_45 = \u53e4\u5df4
|
||||
country_46 = \u585e\u6d66\u8def\u65af
|
||||
country_47 = \u6377\u514b\u5171\u548c\u56fd
|
||||
country_48 = \u4e39\u9ea6
|
||||
country_49 = \u5409\u5e03\u63d0
|
||||
country_50 = \u591a\u7c73\u5c3c\u52a0
|
||||
country_51 = \u591a\u7c73\u5c3c\u52a0\u5171\u548c\u56fd
|
||||
country_52 = \u5384\u74dc\u591a\u5c14
|
||||
country_53 = \u57c3\u53ca
|
||||
country_54 = \u8428\u5c14\u74e6\u591a
|
||||
country_55 = \u8d64\u9053\u51e0\u5185\u4e9a
|
||||
country_56 = \u5384\u7acb\u7279\u91cc\u4e9a
|
||||
country_57 = \u7231\u6c99\u5c3c\u4e9a
|
||||
country_58 = \u57c3\u585e\u4fc4\u6bd4\u4e9a
|
||||
country_59 = \u6590\u6d4e
|
||||
country_60 = \u82ac\u5170
|
||||
country_61 = \u6cd5\u56fd
|
||||
country_62 = \u52a0\u84ec
|
||||
country_63 = \u5188\u6bd4\u4e9a\uff0c
|
||||
country_64 = \u683c\u9c81\u5409\u4e9a
|
||||
country_65 = \u5fb7\u56fd
|
||||
country_66 = \u52a0\u7eb3
|
||||
country_67 = \u5e0c\u814a
|
||||
country_68 = \u683c\u6797\u7eb3\u8fbe
|
||||
country_69 = \u5371\u5730\u9a6c\u62c9
|
||||
country_70 = \u51e0\u5185\u4e9a
|
||||
country_71 = \u51e0\u5185\u4e9a\u6bd4\u7ecd
|
||||
country_72 = \u572d\u4e9a\u90a3
|
||||
country_73 = \u6d77\u5730
|
||||
country_74 = \u6d2a\u90fd\u62c9\u65af
|
||||
country_75 = \u5308\u7259\u5229
|
||||
country_76 = \u51b0\u5c9b
|
||||
country_77 = \u5370\u5ea6
|
||||
country_78 = \u5370\u5ea6\u5c3c\u897f\u4e9a
|
||||
country_79 = \u4f0a\u6717
|
||||
country_80 = \u4f0a\u62c9\u514b
|
||||
country_81 = \u7231\u5c14\u5170
|
||||
country_82 = \u4ee5\u8272\u5217
|
||||
country_83 = \u610f\u5927\u5229
|
||||
country_84 = \u7259\u4e70\u52a0
|
||||
country_85 = \u65e5\u672c
|
||||
country_86 = \u7ea6\u65e6
|
||||
country_87 = \u54c8\u8428\u514b\u65af\u5766
|
||||
country_88 = \u80af\u5c3c\u4e9a
|
||||
country_89 = \u57fa\u91cc\u5df4\u65af
|
||||
country_90 = \u671d\u9c9c
|
||||
country_91 = \u97e9\u56fd
|
||||
country_92 = \u79d1\u5a01\u7279
|
||||
country_93 = \u5409\u5c14\u5409\u65af\u65af\u5766
|
||||
country_94 = \u8001\u631d
|
||||
country_95 = \u62c9\u8131\u7ef4\u4e9a
|
||||
country_96 = \u9ece\u5df4\u5ae9
|
||||
country_97 = \u83b1\u7d22\u6258
|
||||
country_98 = \u5229\u6bd4\u91cc\u4e9a
|
||||
country_99 = \u5229\u6bd4\u4e9a
|
||||
country_100 = \u5217\u652f\u6566\u58eb\u767b
|
||||
country_101 = \u7acb\u9676\u5b9b
|
||||
country_102 = \u5362\u68ee\u5821
|
||||
country_103 = \u9a6c\u5176\u987f
|
||||
country_104 = \u9a6c\u8fbe\u52a0\u65af\u52a0
|
||||
country_105 = \u9a6c\u62c9\u7ef4
|
||||
country_106 = \u9a6c\u6765\u897f\u4e9a
|
||||
country_107 = \u9a6c\u5c14\u4ee3\u592b
|
||||
country_108 = \u9a6c\u91cc
|
||||
country_109 = \u9a6c\u8033\u4ed6
|
||||
country_110 = \u9a6c\u7ecd\u5c14\u7fa4\u5c9b
|
||||
country_111 = \u6bdb\u91cc\u5854\u5c3c\u4e9a
|
||||
country_112 = \u6bdb\u91cc\u6c42\u65af
|
||||
country_113 = \u58a8\u897f\u54e5
|
||||
country_114 = \u5bc6\u514b\u7f57\u5c3c\u897f\u4e9a
|
||||
country_115 = \u6469\u5c14\u591a\u74e6
|
||||
country_116 = \u6469\u7eb3\u54e5
|
||||
country_117 = \u8499\u53e4
|
||||
country_118 = \u9ed1\u5c71
|
||||
country_119 = \u6469\u6d1b\u54e5
|
||||
country_120 = \u83ab\u6851\u6bd4\u514b
|
||||
country_121 = \u7f05\u7538
|
||||
country_122 = \u7eb3\u7c73\u6bd4\u4e9a
|
||||
country_123 = \u7459\u9c81
|
||||
country_124 = \u5c3c\u6cca\u5c14
|
||||
country_125 = \u8377\u5170
|
||||
country_126 = \u65b0\u897f\u5170
|
||||
country_127 = \u5c3c\u52a0\u62c9\u74dc
|
||||
country_128 = \u5c3c\u65e5\u5c14
|
||||
country_129 = \u5c3c\u65e5\u5229\u4e9a
|
||||
country_130 = \u632a\u5a01
|
||||
country_131 = \u963f\u66fc
|
||||
country_132 = \u5df4\u57fa\u65af\u5766
|
||||
country_133 = \u5e15\u52b3
|
||||
country_134 = \u5df4\u62ff\u9a6c
|
||||
country_135 = \u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a
|
||||
country_136 = \u5df4\u62c9\u572d
|
||||
country_137 = \u79d8\u9c81
|
||||
country_138 = \u83f2\u5f8b\u5bbe
|
||||
country_139 = \u6ce2\u5170
|
||||
country_140 = \u8461\u8404\u7259
|
||||
country_141 = \u5361\u5854\u5c14
|
||||
country_142 = \u7f57\u9a6c\u5c3c\u4e9a
|
||||
country_143 = \u4fc4\u7f57\u65af
|
||||
country_144 = \u5362\u65fa\u8fbe
|
||||
country_145 = \u5723\u57fa\u8328\u548c\u5c3c\u7ef4\u65af
|
||||
country_146 = \u5723\u5362\u897f\u4e9a
|
||||
country_147 = \u5723\u6587\u68ee\u7279\u548c\u683c\u6797\u7eb3\u4e01\u65af
|
||||
country_148 = \u8428\u6469\u4e9a
|
||||
country_149 = \u5723\u9a6c\u529b\u8bfa
|
||||
country_150 = \u5723\u591a\u7f8e\u548c\u666e\u6797\u897f\u6bd4
|
||||
country_151 = \u6c99\u7279\u963f\u62c9\u4f2f
|
||||
country_152 = \u585e\u5185\u52a0\u5c14
|
||||
country_153 = \u585e\u5c14\u7ef4\u4e9a
|
||||
country_154 = \u585e\u820c\u5c14
|
||||
country_155 = \u585e\u62c9\u5229\u6602
|
||||
country_156 = \u65b0\u52a0\u5761
|
||||
country_157 = \u65af\u6d1b\u4f10\u514b
|
||||
country_158 = \u65af\u6d1b\u6587\u5c3c\u4e9a
|
||||
country_159 = \u6240\u7f57\u95e8\u7fa4\u5c9b
|
||||
country_160 = \u7d22\u9a6c\u91cc
|
||||
country_161 = \u5357\u975e
|
||||
country_162 = \u897f\u73ed\u7259
|
||||
country_163 = \u65af\u91cc\u5170\u5361
|
||||
country_164 = \u82cf\u4e39
|
||||
country_165 = \u82cf\u91cc\u5357
|
||||
country_166 = \u65af\u5a01\u58eb\u5170
|
||||
country_167 = \u745e\u5178
|
||||
country_168 = \u745e\u58eb
|
||||
country_169 = \u53d9\u5229\u4e9a
|
||||
country_170 = \u5854\u5409\u514b\u65af\u5766
|
||||
country_171 = \u5766\u6851\u5c3c\u4e9a
|
||||
country_172 = \u6cf0\u56fd
|
||||
country_173 = \u4e1c\u5e1d\u6c76
|
||||
country_174 = \u591a\u54e5
|
||||
country_175 = \u6c64\u52a0
|
||||
country_176 = \u7279\u7acb\u5c3c\u8fbe\u548c\u591a\u5df4\u54e5
|
||||
country_177 = \u7a81\u5c3c\u65af
|
||||
country_178 = \u571f\u8033\u5176
|
||||
country_179 = \u571f\u5e93\u66fc\u65af\u5766
|
||||
country_180 = \u56fe\u74e6\u5362
|
||||
country_181 = \u4e4c\u5e72\u8fbe
|
||||
country_182 = \u4e4c\u514b\u5170
|
||||
country_183 = \u963f\u62c9\u4f2f\u8054\u5408\u914b\u957f\u56fd
|
||||
country_184 = \u82f1\u56fd
|
||||
country_185 = \u4e4c\u62c9\u572d
|
||||
country_186 = \u4e4c\u5179\u522b\u514b\u65af\u5766
|
||||
country_187 = \u74e6\u52aa\u963f\u56fe
|
||||
country_188 = \u68b5\u8482\u5188\u57ce
|
||||
country_189 = \u59d4\u5185\u745e\u62c9
|
||||
country_190 = \u8d8a\u5357
|
||||
country_191 = \u4e5f\u95e8
|
||||
country_192 = \u8d5e\u6bd4\u4e9a
|
||||
country_193 = \u6d25\u5df4\u5e03\u97e6
|
||||
country_194 = \u963f\u5e03\u54c8\u5179
|
||||
country_195 = \u53f0\u6e7e
|
||||
country_196 = \u7eb3\u5361
|
||||
country_197 = \u5317\u585e\u6d66\u8def\u65af
|
||||
country_198 = \u5fb7\u6d85\u65af\u7279\u6cb3\u6cbf\u5cb8\u5171\u548c\u56fd
|
||||
country_199 = \u7d22\u9a6c\u91cc\u5170
|
||||
country_200 = \u5357\u5965\u585e\u68af
|
||||
country_201 = \u963f\u4ec0\u83ab\u5c14\u548c\u5361\u6377\u5c9b
|
||||
country_202 = \u5723\u8bde\u5c9b
|
||||
country_203 = \u79d1\u79d1\u65af\uff08\u57fa\u6797\uff09\u7fa4\u5c9b
|
||||
country_204 = \u73ca\u745a\u6d77\u7fa4\u5c9b
|
||||
country_205 = \u8d6b\u5fb7\u5c9b\u548c\u9ea6\u5f53\u52b3\u7fa4\u5c9b
|
||||
country_206 = \u8bfa\u798f\u514b\u5c9b
|
||||
country_207 = \u65b0\u5580\u91cc\u591a\u5c3c\u4e9a
|
||||
country_208 = \u6cd5\u5c5e\u6ce2\u5229\u5c3c\u897f\u4e9a
|
||||
country_209 = \u9a6c\u7ea6\u7279
|
||||
country_210 = \u5723\u5df4\u6cf0\u52d2\u7c73
|
||||
country_211 = \u5723\u9a6c\u4e01
|
||||
country_212 = \u5723\u76ae\u57c3\u5c14\u548c\u5bc6\u514b\u9686
|
||||
country_213 = \u74e6\u5229\u65af\u7fa4\u5c9b\u548c\u5bcc\u56fe\u7eb3\u7fa4\u5c9b
|
||||
country_214 = \u6cd5\u56fd\u5357\u90e8\u548c\u5357\u6781\u9886\u5730
|
||||
country_215 = \u514b\u5229\u73c0\u987f\u5c9b
|
||||
country_216 = \u5e03\u7ef4\u5c9b
|
||||
country_217 = \u5e93\u514b\u7fa4\u5c9b
|
||||
country_218 = \u7ebd\u57c3
|
||||
country_219 = \u6258\u514b\u52b3
|
||||
country_220 = \u6839\u897f\u5c9b
|
||||
country_221 = \u9a6c\u6069\u5c9b
|
||||
country_222 = \u6cfd\u897f
|
||||
country_223 = \u5b89\u572d\u62c9
|
||||
country_224 = \u767e\u6155\u5927
|
||||
country_225 = \u82f1\u5c5e\u5370\u5ea6\u6d0b\u9886\u5730
|
||||
country_226 = \u82f1\u56fd\u4e3b\u6743\u57fa\u5730\u533a
|
||||
country_227 = \u82f1\u5c5e\u7ef4\u5c14\u4eac\u7fa4\u5c9b
|
||||
country_228 = \u5f00\u66fc\u7fa4\u5c9b
|
||||
country_229 = \u798f\u514b\u5170\u7fa4\u5c9b
|
||||
country_230 = \u76f4\u5e03\u7f57\u9640
|
||||
country_231 = \u8499\u7279\u585e\u62c9\u7279
|
||||
country_232 = \u76ae\u7279\u51ef\u6069\u7fa4\u5c9b
|
||||
country_233 = \u5723\u6d77\u4f26\u5a1c
|
||||
country_234 = \u5357\u4e54\u6cbb\u4e9a\u5c9b\u548c\u5357\u6851\u5a01\u5947\u7fa4\u5c9b
|
||||
country_235 = \u7279\u514b\u65af\u548c\u51ef\u79d1\u65af\u7fa4\u5c9b
|
||||
country_236 = \u5317\u9a6c\u91cc\u4e9a\u7eb3\u7fa4\u5c9b
|
||||
country_237 = \u6ce2\u591a\u9ece\u5404
|
||||
country_238 = \u7f8e\u5c5e\u8428\u6469\u4e9a
|
||||
country_239 = \u8d1d\u514b\u5c9b
|
||||
country_240 = \u5173\u5c9b
|
||||
country_241 = \u8c6a\u5170\u5c9b
|
||||
country_242 = \u8d3e\u7ef4\u65af\u5c9b
|
||||
country_243 = \u7ea6\u7ff0\u65af\u987f\u73af\u7901
|
||||
country_244 = \u91d1\u66fc\u7901
|
||||
country_245 = \u4e2d\u9014\u5c9b
|
||||
country_246 = \u7eb3\u74e6\u8428\u5c9b
|
||||
country_247 = \u5df4\u5c14\u7c73\u62c9\u73af\u7901
|
||||
country_248 = \u7f8e\u56fd\u7ef4\u5c14\u4eac\u7fa4\u5c9b
|
||||
country_249 = \u5a01\u514b\u5c9b
|
||||
country_250 = \u9999\u6e2f
|
||||
country_251 = \u6fb3\u95e8
|
||||
country_252 = \u6cd5\u7f57\u7fa4\u5c9b
|
||||
country_253 = \u683c\u9675\u5170
|
||||
country_254 = \u6cd5\u5c5e\u572d\u4e9a\u90a3
|
||||
country_255 = \u74dc\u5fb7\u7f57\u666e\u5c9b
|
||||
country_256 = \u9a6c\u63d0\u5c3c\u514b
|
||||
country_257 = \u7559\u5c3c\u6c6a
|
||||
country_258 = \u5965\u5170
|
||||
country_259 = \u963f\u9c81\u5df4
|
||||
country_260 = \u8377\u5c5e\u5b89\u7684\u5217\u65af
|
||||
country_261 = \u65af\u74e6\u5c14\u5df4\u5fb7
|
||||
country_262 = \u963f\u68ee\u677e
|
||||
country_263 = \u7279\u91cc\u65af\u5766\u8fbe\u5e93\u5c3c\u4e9a
|
||||
country_264 = \u5357\u6781\u6d32
|
||||
country_265 = \u79d1\u7d22\u6c83
|
||||
country_266 = \u5df4\u52d2\u65af\u5766\u9886\u571f
|
||||
country_267 = \u897f\u6492\u54c8\u62c9
|
||||
country_268 = \u6fb3\u5927\u5229\u4e9a\u5357\u6781\u9886\u5730
|
||||
country_269 = \u7f57\u65af\u5c5e\u5730
|
||||
country_270 = \u5f7c\u5f97\u4e00\u4e16\u5c9b
|
||||
country_271 = \u6bdb\u5fb7\u7687\u540e\u5730
|
||||
country_272 = \u82f1\u5c5e\u5357\u6781\u9886\u5730
|
||||
|
||||
OBP-30001 = \u627e\u4e0d\u5230\u94f6\u884c\u3002\u0020\u8bf7\u4e3a\u0020\u0042\u0041\u004e\u004b\u005f\u0049\u0044\u0020\u6307\u5b9a\u4e00\u4e2a\u6709\u6548\u503c
|
||||
@ -31,7 +31,7 @@ import java.net.URLDecoder
|
||||
import code.api.Constant._
|
||||
import code.api.OAuthHandshake._
|
||||
import code.api.builder.AccountInformationServiceAISApi.APIMethods_AccountInformationServiceAISApi
|
||||
import code.api.util.APIUtil._
|
||||
import code.api.util.APIUtil.{getClass, _}
|
||||
import code.api.util.ErrorMessages.{InvalidDAuthHeaderToken, UserIsDeleted, UsernameHasBeenLocked, attemptedToOpenAnEmptyBox}
|
||||
import code.api.util._
|
||||
import code.api.v3_0_0.APIMethods300
|
||||
@ -45,15 +45,18 @@ import com.openbankproject.commons.model.ErrorMessage
|
||||
import com.openbankproject.commons.util.{ApiVersion, ReflectUtils, ScannedApiVersion}
|
||||
import net.liftweb.common.{Box, Full, _}
|
||||
import net.liftweb.http.rest.RestHelper
|
||||
import net.liftweb.http.{JsonResponse, LiftResponse, Req, S}
|
||||
import net.liftweb.http.{JsonResponse, LiftResponse, LiftRules, Req, S, TransientRequestMemoize}
|
||||
import net.liftweb.json.Extraction
|
||||
import net.liftweb.json.JsonAST.JValue
|
||||
import net.liftweb.util.Helpers
|
||||
import net.liftweb.util.{Helpers, NamedPF, Props, ThreadGlobal}
|
||||
import net.liftweb.util.Helpers.tryo
|
||||
|
||||
import java.util.{Locale, ResourceBundle}
|
||||
import scala.collection.immutable.List
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
import scala.math.Ordering
|
||||
import scala.util.control.NoStackTrace
|
||||
import scala.xml.{Node, NodeSeq}
|
||||
|
||||
trait APIFailure{
|
||||
val msg : String
|
||||
@ -72,7 +75,76 @@ object APIFailure {
|
||||
case class APIFailureNewStyle(failMsg: String,
|
||||
failCode: Int = 400,
|
||||
ccl: Option[CallContextLight] = None
|
||||
)
|
||||
){
|
||||
def translatedErrorMessage = {
|
||||
|
||||
val errorCode = extractErrorMessageCode(failMsg)
|
||||
val errorBody = extractErrorMessageBody(failMsg)
|
||||
|
||||
val localeUrlParameter = getHttpRequestUrlParam(ccl.map(_.url).getOrElse(""),"Locale")
|
||||
val locale = I18NUtil.computeLocale(localeUrlParameter)
|
||||
|
||||
val liftCoreResourceBundle = tryo(ResourceBundle.getBundle(LiftRules.liftCoreResourceName, locale)).toList
|
||||
|
||||
val _resBundle = new ThreadGlobal[List[ResourceBundle]]
|
||||
object resourceValueCache extends TransientRequestMemoize[(String, Locale), String]
|
||||
|
||||
def resourceBundles(loc: Locale): List[ResourceBundle] = {
|
||||
_resBundle.box match {
|
||||
case Full(bundles) => bundles
|
||||
case _ => {
|
||||
_resBundle.set(
|
||||
LiftRules.resourceForCurrentLoc.vend() :::
|
||||
LiftRules.resourceNames.flatMap(name => tryo{
|
||||
if (Props.devMode) {
|
||||
tryo{
|
||||
val clz = this.getClass.getClassLoader.loadClass("java.util.ResourceBundle")
|
||||
val meth = clz.getDeclaredMethods.
|
||||
filter{m => m.getName == "clearCache" && m.getParameterTypes.length == 0}.
|
||||
toList.head
|
||||
meth.invoke(null)
|
||||
}
|
||||
}
|
||||
List(ResourceBundle.getBundle(name, loc))
|
||||
}.openOr(
|
||||
NamedPF.applyBox((name, loc), LiftRules.resourceBundleFactories.toList).map(List(_)) openOr Nil
|
||||
)))
|
||||
_resBundle.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def resourceBundleList: List[ResourceBundle] = resourceBundles(locale) ++ liftCoreResourceBundle
|
||||
|
||||
def ?!(str: String, resBundle: List[ResourceBundle]): String =
|
||||
resBundle.flatMap(
|
||||
r => tryo(
|
||||
r.getObject(str) match {
|
||||
case s: String => Full(s)
|
||||
case n: Node => Full(n.text)
|
||||
case ns: NodeSeq => Full(ns.text)
|
||||
case _ => Empty
|
||||
})
|
||||
.flatMap(s => s)).find(s => true) getOrElse {
|
||||
LiftRules.localizationLookupFailureNotice.foreach(_ (str, locale));
|
||||
str
|
||||
}
|
||||
|
||||
def ?(str: String, locale: Locale): String = resourceValueCache.get(
|
||||
str ->
|
||||
locale,
|
||||
if(?!(str, resourceBundleList)==str) //If can not find the value from props, then return the default error body.
|
||||
errorBody
|
||||
else
|
||||
?!(str, resourceBundleList)
|
||||
|
||||
)
|
||||
|
||||
val translatedErrorBody = ?(errorCode, locale)
|
||||
s"$errorCode$translatedErrorBody"
|
||||
}
|
||||
}
|
||||
|
||||
//if you change this, think about backwards compatibility! All existing
|
||||
//versions of the API return this failure message, so if you change it, make sure
|
||||
|
||||
@ -611,14 +611,14 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
|
||||
def errorJsonResponse(message : String = "error", httpCode : Int = 400, callContextLight: Option[CallContextLight] = None)(implicit headers: CustomResponseHeaders = CustomResponseHeaders(Nil)) : JsonResponse = {
|
||||
def check403(message: String): Boolean = {
|
||||
message.contains(UserHasMissingRoles) ||
|
||||
message.contains(UserNoPermissionAccessView) ||
|
||||
message.contains(UserHasMissingRoles) ||
|
||||
message.contains(UserNotSuperAdminOrMissRole) ||
|
||||
message.contains(ConsumerHasMissingRoles)
|
||||
message.contains(extractErrorMessageCode(UserHasMissingRoles)) ||
|
||||
message.contains(extractErrorMessageCode(UserNoPermissionAccessView)) ||
|
||||
message.contains(extractErrorMessageCode(UserHasMissingRoles)) ||
|
||||
message.contains(extractErrorMessageCode(UserNotSuperAdminOrMissRole)) ||
|
||||
message.contains(extractErrorMessageCode(ConsumerHasMissingRoles))
|
||||
}
|
||||
def check401(message: String): Boolean = {
|
||||
message.contains(UserNotLoggedIn)
|
||||
message.contains(extractErrorMessageCode(UserNotLoggedIn))
|
||||
}
|
||||
val (code, responseHeaders) =
|
||||
message match {
|
||||
@ -3038,8 +3038,10 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
throw new Exception("Empty Box not allowed")
|
||||
case obj1@ParamFailure(m,e,c,af: APIFailureNewStyle) =>
|
||||
val obj = (m,e, c) match {
|
||||
case ("", Empty, Empty) => Empty ?~! af.failMsg
|
||||
case _ => Failure (m, e, c) ?~! af.failMsg
|
||||
case ("", Empty, Empty) =>
|
||||
Empty ?~! af.translatedErrorMessage
|
||||
case _ =>
|
||||
Failure (m, e, c) ?~! af.translatedErrorMessage
|
||||
}
|
||||
val failuresMsg = filterMessage(obj)
|
||||
val callContext = af.ccl.map(_.copy(httpCode = Some(af.failCode)))
|
||||
@ -4201,4 +4203,21 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
|
||||
""".stripMargin
|
||||
|
||||
val transactionRequestChallengeTtl = APIUtil.getPropsAsLongValue("transaction_request_challenge_ttl", 600)
|
||||
|
||||
val obpErrorMessageCodeRegex = "^(OBP-\\d+):"
|
||||
|
||||
//eg: UserHasMissingRoles = "OBP-20006: User is missing one or more roles:" -->
|
||||
// errorCode = "OBP-20006:"
|
||||
// So far we support the i180n, we need to separate the errorCode and errorBody
|
||||
def extractErrorMessageCode (errorMessage: String) = {
|
||||
val regex = obpErrorMessageCodeRegex.r
|
||||
regex.findFirstIn(errorMessage).mkString
|
||||
}
|
||||
//eg: UserHasMissingRoles = "OBP-20006: User is missing one or more roles:" -->
|
||||
// errorBody = " User is missing one or more roles:"
|
||||
// So far we support the i180n, we need to separate the errorCode and errorBody
|
||||
def extractErrorMessageBody(errorMessage: String) = {
|
||||
|
||||
errorMessage.replaceFirst(obpErrorMessageCodeRegex,"")
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ object ErrorMessages {
|
||||
val FXCurrencyCodeCombinationsNotSupported = "OBP-10004: ISO Currency code combination not supported for FX. Please modify the FROM_CURRENCY_CODE or TO_CURRENCY_CODE. "
|
||||
val InvalidDateFormat = "OBP-10005: Invalid Date Format. Could not convert value to a Date."
|
||||
val InvalidCurrency = "OBP-10006: Invalid Currency Value."
|
||||
val IncorrectRoleName = "OBP-10007: Incorrect Role name: "
|
||||
val IncorrectRoleName = "OBP-10007: Incorrect Role name:"
|
||||
val CouldNotTransformJsonToInternalModel = "OBP-10008: Could not transform Json to internal model."
|
||||
val CountNotSaveOrUpdateResource = "OBP-10009: Could not save or update resource."
|
||||
val NotImplemented = "OBP-10010: Not Implemented "
|
||||
@ -77,7 +77,7 @@ object ErrorMessages {
|
||||
val maximumLimitExceeded = "OBP-10012: Invalid value. Maximum number is 10000."
|
||||
val attemptedToOpenAnEmptyBox = "OBP-10013: Attempted to open an empty Box."
|
||||
val cannotDecryptValueOfProperty = "OBP-10014: Could not decrypt value of property "
|
||||
val AllowedValuesAre = "OBP-10015: Allowed values are: "
|
||||
val AllowedValuesAre = "OBP-10015: Allowed values are:"
|
||||
val InvalidFilterParameterFormat = "OBP-10016: Incorrect filter Parameters in URL. "
|
||||
val InvalidUrl = "OBP-10017: Incorrect URL Format. "
|
||||
val TooManyRequests = "OBP-10018: Too Many Requests."
|
||||
@ -106,7 +106,7 @@ object ErrorMessages {
|
||||
val FilterIsDeletedFormatError = s"OBP-10036: is_deleted parameter can only take two values: TRUE or FALSE!"
|
||||
|
||||
val InvalidApiVersionString = "OBP-00027: Invalid API Version string. We could not find the version specified."
|
||||
val IncorrectTriggerName = "OBP-10028: Incorrect Trigger name: "
|
||||
val IncorrectTriggerName = "OBP-10028: Incorrect Trigger name:"
|
||||
|
||||
val ScaMethodNotDefined = "OBP-10030: Strong customer authentication method is not defined at this instance."
|
||||
|
||||
@ -114,11 +114,11 @@ object ErrorMessages {
|
||||
|
||||
// Authentication / Authorisation / User messages (OBP-20XXX)
|
||||
val UserNotLoggedIn = "OBP-20001: User not logged in. Authentication is required!"
|
||||
val DirectLoginMissingParameters = "OBP-20002: These DirectLogin parameters are missing: "
|
||||
val DirectLoginInvalidToken = "OBP-20003: This DirectLogin token is invalid or expired: "
|
||||
val DirectLoginMissingParameters = "OBP-20002: These DirectLogin parameters are missing:"
|
||||
val DirectLoginInvalidToken = "OBP-20003: This DirectLogin token is invalid or expired:"
|
||||
val InvalidLoginCredentials = "OBP-20004: Invalid login credentials. Check username/password."
|
||||
val UserNotFoundById = "OBP-20005: User not found. Please specify a valid value for USER_ID."
|
||||
val UserHasMissingRoles = "OBP-20006: User is missing one or more roles: "
|
||||
val UserHasMissingRoles = "OBP-20006: User is missing one or more roles:"
|
||||
val UserNotFoundByEmail = "OBP-20007: User not found by email."
|
||||
|
||||
val InvalidConsumerKey = "OBP-20008: Invalid Consumer Key."
|
||||
@ -146,13 +146,13 @@ object ErrorMessages {
|
||||
val SystemViewsCanNotBeModified = "OBP-20021: System Views can not be modified. Only the created views can be modified."
|
||||
val ViewDoesNotPermitAccess = "OBP-20022: View does not permit the access."
|
||||
|
||||
val ConsumerHasMissingRoles = "OBP-20023: Consumer is missing one or more roles: "
|
||||
val ConsumerHasMissingRoles = "OBP-20023: Consumer is missing one or more roles:"
|
||||
val ConsumerNotFoundById = "OBP-20024: Consumer not found. Please specify a valid value for CONSUMER_ID."
|
||||
val ScopeNotFound = "OBP-20025: Scope not found. Please specify a valid value for SCOPE_ID."
|
||||
val ConsumerDoesNotHaveScope = "OBP-20026: CONSUMER_ID does not have the SCOPE_ID "
|
||||
|
||||
val UserNotFoundByUsername = "OBP-20027: User not found by username."
|
||||
val GatewayLoginMissingParameters = "OBP-20028: These GatewayLogin parameters are missing: "
|
||||
val GatewayLoginMissingParameters = "OBP-20028: These GatewayLogin parameters are missing:"
|
||||
val GatewayLoginUnknownError = "OBP-20029: Unknown Gateway login error."
|
||||
val GatewayLoginHostPropertyMissing = "OBP-20030: Property gateway.host is not defined."
|
||||
val GatewayLoginWhiteListAddresses = "OBP-20031: Gateway login can be done only from allowed addresses."
|
||||
@ -172,7 +172,7 @@ object ErrorMessages {
|
||||
val NotEnoughtSearchStatisticsResults = "OBP-20052: Result set too small. Will not be displayed for reasons of privacy."
|
||||
val ElasticSearchEmptyQueryBody = "OBP-20053: The Elasticsearch query body cannot be empty"
|
||||
val InvalidAmount = "OBP-20054: Invalid amount. Please specify a valid value for amount."
|
||||
val MissingQueryParams = "OBP-20055: These query parameters are missing: "
|
||||
val MissingQueryParams = "OBP-20055: These query parameters are missing:"
|
||||
val ElasticSearchDisabled = "OBP-20056: Elasticsearch is disabled for this API instance."
|
||||
val UserNotFoundByUserId = "OBP-20057: User not found by userId."
|
||||
val ConsumerIsDisabled = "OBP-20058: Consumer is disabled."
|
||||
@ -185,7 +185,7 @@ object ErrorMessages {
|
||||
val UserIsDeleted = "OBP-20064: The user is deleted!"
|
||||
|
||||
val DAuthCannotGetOrCreateUser = "OBP-20065: Cannot get or create user during DAuth process."
|
||||
val DAuthMissingParameters = "OBP-20066: These DAuth parameters are missing: "
|
||||
val DAuthMissingParameters = "OBP-20066: These DAuth parameters are missing:"
|
||||
val DAuthUnknownError = "OBP-20067: Unknown DAuth login error."
|
||||
val DAuthHostPropertyMissing = "OBP-20068: Property dauth.host is not defined."
|
||||
val DAuthWhiteListAddresses = "OBP-20069: DAuth login can be done only from allowed addresses."
|
||||
@ -198,7 +198,7 @@ object ErrorMessages {
|
||||
val UserAttributeNotFound = "OBP-20081: User Attribute not found by USER_ATTRIBUTE_ID."
|
||||
|
||||
|
||||
val UserNotSuperAdminOrMissRole = "OBP-20101: Current User is not super admin or is missing entitlements: "
|
||||
val UserNotSuperAdminOrMissRole = "OBP-20101: Current User is not super admin or is missing entitlements:"
|
||||
val CannotGetOrCreateUser = "OBP-20102: Cannot get or create user."
|
||||
val InvalidUserProvider = "OBP-20103: Invalid DAuth User Provider."
|
||||
|
||||
@ -267,7 +267,7 @@ object ErrorMessages {
|
||||
|
||||
val CreateBankError = "OBP-30020: Could not create the Bank"
|
||||
val UpdateBankError = "OBP-30021: Could not update the Bank"
|
||||
val NoViewPermission = "OBP-30022: The current view does not have the permission: "
|
||||
val NoViewPermission = "OBP-30022: The current view does not have the permission:"
|
||||
val UpdateConsumerError = "OBP-30023: Cannot update Consumer "
|
||||
val CreateConsumerError = "OBP-30024: Could not create Consumer "
|
||||
val CreateOAuth2ConsumerError = "OBP-30077: Could not create OAuth2 Consumer."
|
||||
@ -467,7 +467,7 @@ object ErrorMessages {
|
||||
val ConsentDisabled = "OBP-35007: Consents are not allowed at this instance. "
|
||||
val ConsentHeaderNotFound = "OBP-35008: Cannot get Consent-Id. "
|
||||
val ConsentAllowedScaMethods = "OBP-35009: Only SMS and EMAIL are supported as SCA methods. "
|
||||
val SmsServerNotResponding = "OBP-35010: SMS server is not working or SMS server can not send the message to the phone number: "
|
||||
val SmsServerNotResponding = "OBP-35010: SMS server is not working or SMS server can not send the message to the phone number:"
|
||||
val AuthorizationNotFound = "OBP-35011: Resource identification of the related Consent authorisation sub-resource not found by AUTHORIZATION_ID. "
|
||||
val ConsentAlreadyRevoked = "OBP-35012: Consent is already revoked. "
|
||||
val RolesAllowedInConsent = "OBP-35013: Consents can only contain Roles that you already have access to."
|
||||
|
||||
@ -64,6 +64,11 @@ class WebUI extends MdcLoggable{
|
||||
}
|
||||
}
|
||||
|
||||
def homePage = {
|
||||
val host = Props.get("base_url").getOrElse("unknown")
|
||||
"#uk a [href]" #> scala.xml.Unparsed(s"$host/?locale=es_ES") &
|
||||
"#it a [href]" #> scala.xml.Unparsed(s"$host/?locale=en_EN")
|
||||
}
|
||||
|
||||
|
||||
// Cookie Consent button.
|
||||
|
||||
@ -33,8 +33,10 @@ Berlin 13359, Germany
|
||||
<div id="main-about-box">
|
||||
<h1 id="main-about-text" data-lift="WebUI.aboutText">Welcome to the Open Bank Project API Sandbox test instance!</h1>
|
||||
<div id="main-about-buttons">
|
||||
<a class="api-explorer-link btn btn-danger" data-lift="WebUI.apiExplorerLink" href="">View API Explorer</a>
|
||||
<a id="sandbox-introduction-link" class="btn btn-default" data-lift="WebUI.sandboxIntroductionLink" href="">Introduction</a>
|
||||
<a class="api-explorer-link btn btn-danger" data-lift="WebUI.apiExplorerLink" href="">
|
||||
<span class="lift:Loc.view_api_explorer">View API Explorer</span></a>
|
||||
<a id="sandbox-introduction-link" class="btn btn-default" data-lift="WebUI.sandboxIntroductionLink" href="">
|
||||
<span class="lift:Loc.introduction">Introduction</span></a>
|
||||
<!-- <a href="/consumer-registration" class="btn btn-default">Get API key</a>-->
|
||||
<!-- <a class="sofi-link btn btn-default" data-lift="WebUI.sofiLink" href="">SOFIT</a>-->
|
||||
<!-- <a id="sandbox-introduction-link" class="btn btn-default" data-lift="WebUI.sandboxIntroductionLink" href="">INTRODUCTION</a>-->
|
||||
@ -313,18 +315,21 @@ Berlin 13359, Germany
|
||||
<div id="main-start_building" class="col-xs-12 col-sm-6">
|
||||
<h2 name="get-started" data-lift="WebUI.getStartedText">Get started building your application</h2>
|
||||
<div class="btn btn-default pull-left">
|
||||
<a href="/consumer-registration">Get API key</a>
|
||||
<a href="/consumer-registration">
|
||||
<span class="lift:Loc.get_api_key">Get API key</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="for-banks" name="for-banks" data-lift="WebUI.forBanks" class="col-xs-12 col-sm-6">
|
||||
<h2>For banks</h2>
|
||||
<a class="api-manager-link btn btn-default pull-left"
|
||||
data-lift="WebUI.apiManagerLink" href="">API Manager</a>
|
||||
data-lift="WebUI.apiManagerLink" href="">
|
||||
<span class="lift:Loc.api_manager">API Manager</span></a>
|
||||
<a class="obp-cli-link btn btn-default pull-left" data-lift="WebUI.obpCliLink"
|
||||
href="">OBP CLI</a>
|
||||
<a class="api-tester-link btn btn-default pull-left"
|
||||
data-lift="WebUI.apiTesterLink" href="">API Tester</a>
|
||||
data-lift="WebUI.apiTesterLink" href="">
|
||||
<span class="lift:Loc.api_tester">API Tester</span></a>
|
||||
<a class="api-hola-link btn btn-default pull-left"
|
||||
data-lift="WebUI.apiHolaLink" href="">Hola</a>
|
||||
</div>
|
||||
|
||||
@ -139,6 +139,7 @@ Berlin 13359, Germany
|
||||
<a href="/user_mgt/sign_up" class="navbar-btn" id ="register-link"><lift:loc locid="register">Register</lift:loc></a><a data-lift="Login.loggedOut" href="#" class="btn btn-danger login"><lift:loc locid="logon">Log on</lift:loc></a>
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class="navitem" data-lift="Login.loggedIn" >
|
||||
<!-- LOGGED IN -->
|
||||
<p class="navbar-btn"><a href="/user-information"><span id="loggedIn-username">username</span></a><a href="#" class="btn btn-default logout">Log off</a></p>
|
||||
@ -184,7 +185,8 @@ Berlin 13359, Germany
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" id="technical-faqs-anchor-nav">
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">Support</a>
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">
|
||||
<span class="lift:Loc.support">Support</span></a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@ -205,11 +207,12 @@ Berlin 13359, Germany
|
||||
<div id="footer-div">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="termsAndConditions-link" data-lift="WebUI.termsAndConditions" href="">Terms and
|
||||
Conditions</a>
|
||||
<a class="termsAndConditions-link" data-lift="WebUI.termsAndConditions" href=""><span class="lift:Loc.terms_conditions">Terms and
|
||||
Conditions</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="privacy-policy-link" data-lift="WebUI.privacyPolicyLink" href="https://openbankproject.com/privacy-policy">Privacy Policy</a>
|
||||
<a class="privacy-policy-link" data-lift="WebUI.privacyPolicyLink" href="https://openbankproject.com/privacy-policy">
|
||||
<span class="lift:Loc.privacy_policy">Privacy Policy</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://twitter.com/#!/OpenBankProject">Twitter</a>
|
||||
@ -218,17 +221,26 @@ Berlin 13359, Germany
|
||||
<a href="https://github.com/OpenBankProject/OBP-API/">Github</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-documentation-link" data-lift="WebUI.apiDocumentationLink" href="">API
|
||||
Documentation</a>
|
||||
<a class="api-documentation-link" data-lift="WebUI.apiDocumentationLink" href="">
|
||||
<span class="lift:Loc.api_documentation">API Documentation</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="sofi-link" data-lift="WebUI.sofiLink" href="">Sofit</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/user_mgt/sign_up?after-signup=link-to-customer" class="navbar-btn" id ="register-link">On Board</a>
|
||||
<a href="/user_mgt/sign_up?after-signup=link-to-customer" class="navbar-btn" id ="register-link">
|
||||
<span class="lift:Loc.register">On Board</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-link" data-lift="WebUI.apiLinkHuman" href="">This API Host</a>
|
||||
<a class="api-link" data-lift="WebUI.apiLinkHuman" href="">
|
||||
<span class="lift:Loc.api_host">This API Host</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="language-tag" data-lift="WebUI.homePage">
|
||||
<a href="#" >Language </a>
|
||||
<a id="es" href="/" > ES </a>
|
||||
<a id="en" href="/" >| EN </a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="copyright">
|
||||
|
||||
@ -4,6 +4,7 @@ import code.api.BerlinGroup.ScaStatus
|
||||
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.{CancellationJsonV13, InitiatePaymentResponseJson, StartPaymentAuthorisationJson}
|
||||
import code.api.builder.PaymentInitiationServicePISApi.APIMethods_PaymentInitiationServicePISApi
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ErrorMessages.{AuthorisationNotFound, InvalidJsonFormat, NotPositiveAmount, _}
|
||||
import code.model.dataAccess.{BankAccountRouting, MappedBankAccount}
|
||||
import code.setup.{APIResponse, DefaultUsers}
|
||||
@ -80,7 +81,7 @@ class PaymentInitiationServicePISApiTest extends BerlinGroupServerSetupV1_3 with
|
||||
response.code should equal(400)
|
||||
val error = s"${NotPositiveAmount} Current input is: '-1234'"
|
||||
And("error should be " + error)
|
||||
response.body.extract[ErrorMessage].message should equal (error)
|
||||
response.body.extract[ErrorMessage].message contains extractErrorMessageCode(NotPositiveAmount) should be (true)
|
||||
}
|
||||
scenario("Successful case - small amount -- change the balance", BerlinGroupV1_3, PIS, initiatePayment) {
|
||||
val accountsRoutingIban = BankAccountRouting.findAll(By(BankAccountRouting.AccountRoutingScheme, AccountRoutingScheme.IBAN.toString))
|
||||
|
||||
@ -3,6 +3,7 @@ package code.api.v2_0_0
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import com.openbankproject.commons.model.ErrorMessage
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ApiRole.CanGetEntitlementsForAnyUserAtAnyBank
|
||||
import code.api.util.ErrorMessages.{UserHasMissingRoles, _}
|
||||
import code.api.util.{ApiRole, ErrorMessages}
|
||||
@ -74,7 +75,7 @@ class EntitlementTests extends V200ServerSetup with DefaultUsers {
|
||||
|
||||
Then("We should get a 403")
|
||||
responsePost.code should equal(403)
|
||||
responsePost.body.toString contains (UserHasMissingRoles) should be (true)
|
||||
responsePost.body.toString contains (extractErrorMessageCode(UserHasMissingRoles)) should be (true)
|
||||
|
||||
Then("We grant the canCreateEntitlementAtOneBank role")
|
||||
Entitlement.entitlement.vend.addEntitlement(testBankId1.value, resourceUser1.userId, ApiRole.canCreateEntitlementAtOneBank.toString)
|
||||
@ -101,7 +102,7 @@ class EntitlementTests extends V200ServerSetup with DefaultUsers {
|
||||
|
||||
Then("We should get a 403")
|
||||
responsePost.code should equal(403)
|
||||
responsePost.body.toString contains (UserHasMissingRoles) should be (true)
|
||||
responsePost.body.toString contains (extractErrorMessageCode(UserHasMissingRoles)) should be (true)
|
||||
|
||||
Then("We grant the canCreateEntitlementAtOneBank role")
|
||||
Entitlement.entitlement.vend.addEntitlement("wrongbankId", resourceUser1.userId, ApiRole.canCreateEntitlementAtOneBank.toString)
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package code.api.v2_2_0
|
||||
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.{ApiRole, ErrorMessages}
|
||||
import code.api.util.ErrorMessages.UserHasMissingRoles
|
||||
import code.entitlement.Entitlement
|
||||
@ -129,7 +130,7 @@ class AccountTest extends V220ServerSetup with DefaultUsers {
|
||||
val responseWithNoRole = makePutRequest(requestPutNewAccountId, write(accountPutJSON2))
|
||||
|
||||
responseWithNoRole.code should equal(403)
|
||||
responseWithNoRole.body.toString contains(s"$UserHasMissingRoles") should be (true)
|
||||
responseWithNoRole.body.toString contains(extractErrorMessageCode(UserHasMissingRoles)) should be (true)
|
||||
|
||||
|
||||
Then("We grant the roles and test it again")
|
||||
|
||||
@ -5,6 +5,7 @@ import com.openbankproject.commons.model.{AccountRouting, AccountRoutingJsonV121
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.updateAccountRequestJsonV310
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ErrorMessages.{UserHasMissingRoles, UserNotLoggedIn}
|
||||
import code.api.util.ApiRole
|
||||
import code.api.v2_0_0.BasicAccountJSON
|
||||
@ -251,7 +252,7 @@ class AccountTest extends V310ServerSetup with DefaultUsers {
|
||||
val responseWithNoRole = makePutRequest(request310WithNewAccountId, write(putCreateAccountOtherUserJsonV310))
|
||||
Then("We should get a 403 and some error message")
|
||||
responseWithNoRole.code should equal(403)
|
||||
responseWithNoRole.body.toString contains(s"$UserHasMissingRoles") should be (true)
|
||||
responseWithNoRole.body.toString contains(extractErrorMessageCode(UserHasMissingRoles)) should be (true)
|
||||
|
||||
|
||||
Then("We grant the roles and test it again")
|
||||
|
||||
@ -3,6 +3,7 @@ package code.api.v4_0_0
|
||||
import com.openbankproject.commons.model.ErrorMessage
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ApiRole.CanCreateDirectDebitAtOneBank
|
||||
import com.openbankproject.commons.util.ApiVersion
|
||||
import code.api.util.ErrorMessages.{NoViewPermission, UserHasMissingRoles, UserNotLoggedIn}
|
||||
@ -45,7 +46,7 @@ class DirectDebitTest extends V400ServerSetup {
|
||||
val response400 = makePostRequest(request400, write(postDirectDebitJsonV400))
|
||||
Then("We should get a 400")
|
||||
response400.code should equal(400)
|
||||
response400.body.extract[ErrorMessage].message should startWith(NoViewPermission)
|
||||
response400.body.extract[ErrorMessage].message contains extractErrorMessageCode(NoViewPermission) should be (true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package code.api.v4_0_0
|
||||
import com.openbankproject.commons.model.ErrorMessage
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ApiRole.CanCreateStandingOrderAtOneBank
|
||||
import com.openbankproject.commons.util.ApiVersion
|
||||
import code.api.util.ErrorMessages.{NoViewPermission, UserHasMissingRoles, UserNotLoggedIn}
|
||||
@ -45,7 +46,7 @@ class StandingOrderTest extends V400ServerSetup {
|
||||
val response400 = makePostRequest(request400, write(postStandingOrderJsonV400))
|
||||
Then("We should get a 400")
|
||||
response400.code should equal(400)
|
||||
response400.body.extract[ErrorMessage].message should startWith(NoViewPermission)
|
||||
response400.body.extract[ErrorMessage].message contains extractErrorMessageCode(NoViewPermission) should be (true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import code.api.ChargePolicy
|
||||
import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.util.APIUtil.OAuth._
|
||||
import code.api.util.APIUtil.extractErrorMessageCode
|
||||
import code.api.util.ApiRole.CanCreateAnyTransactionRequest
|
||||
import code.api.util.ErrorMessages._
|
||||
import code.api.util.{APIUtil, ErrorMessages}
|
||||
@ -1172,7 +1173,7 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers {
|
||||
helper.setAnswerTransactionRequest(challengeId = challengeOfUser1.map(_.id).getOrElse(""))
|
||||
And("we call the endpoint")
|
||||
val ansReqResponseUser1 = helper.makeAnswerRequest
|
||||
ansReqResponseUser1.body.extract[ErrorMessage].message should equal(NextChallengePending)
|
||||
ansReqResponseUser1.body.extract[ErrorMessage].message contains extractErrorMessageCode(NextChallengePending) should be (true)
|
||||
|
||||
Then("We call 'Answer Transaction Request Challenge - V400' to finish the request")
|
||||
And("we prepare the parameters for it")
|
||||
@ -1420,7 +1421,7 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers {
|
||||
helper.setAnswerTransactionRequest(challengeId = challengeOfUser1.map(_.id).getOrElse(""))
|
||||
And("we call the endpoint")
|
||||
val ansReqResponseUser1 = helper.makeAnswerRequest
|
||||
ansReqResponseUser1.body.extract[ErrorMessage].message should equal(NextChallengePending)
|
||||
ansReqResponseUser1.body.extract[ErrorMessage].message contains extractErrorMessageCode(NextChallengePending) should be (true)
|
||||
|
||||
Then("We call 'Answer Transaction Request Challenge - V400' to finish the request")
|
||||
And("we prepare the parameters for it")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user