[Home] [Help]
PACKAGE BODY: APPS.HR_GENERIC_INT
Source
1 package body hr_generic_int as
2 /* $Header: hrgenint.pkb 120.0 2005/05/31 00:36:13 appldev noship $ */
3
4 -- Logging code data
5 g_module CONSTANT VARCHAR2(80) :=
6 'per.pl_sql.hr_generic_int';
7
8 FUNCTION get_sso_user
9 (
10 p_user_id IN NUMBER
11 )
12 RETURN VARCHAR2 IS
13
14 l_procedure VARCHAR2(31) := 'get_sso_user';
15 l_user VARCHAR2(60) := NULL;
16
17 --
18 BEGIN
19 --
20
21 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
22 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
23 MODULE => g_module || '.' || l_procedure,
24 MESSAGE => 'Entering ' || l_procedure);
25 END IF;
26
27 SELECT user_name
28 INTO l_user
29 FROM fnd_user
30 WHERE user_id = p_user_id;
31
32 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
33 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
34 MODULE => g_module || '.' || l_procedure,
35 MESSAGE => 'sso user is ' || l_user);
36 END IF;
37
38 IF l_user IS NULL THEN
39 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
40 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
41 MODULE => g_module || '.' || l_procedure,
42 MESSAGE => 'sso user is not found for user_id ' ||
43 p_user_id);
44 END IF;
45 END IF;
46
47 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
48 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
49 MODULE => g_module || '.' || l_procedure,
50 MESSAGE => 'Exiting ' || l_procedure);
51 END IF;
52
53 RETURN(l_user);
54
55 EXCEPTION
56 WHEN OTHERS THEN
57 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
58 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
59 MODULE => g_module || '.' || l_procedure,
60 MESSAGE => 'Error whilst finding SSO entry' ||
61 ' - ' || sqlerrm);
62 END IF;
63 RAISE;
64
65 --
66 END get_sso_user;
67 --
68
69
70 FUNCTION manage_user_entry
71 (
72 p_ext_app_id IN NUMBER,
73 p_user_id IN NUMBER,
74 p_app_user IN VARCHAR2,
75 p_app_pwd IN VARCHAR2,
76 p_FNAME1 IN VARCHAR2,
77 p_FVAL1 IN VARCHAR2,
78 p_FNAME2 IN VARCHAR2,
79 p_FVAL2 IN VARCHAR2,
80 p_FNAME3 IN VARCHAR2,
81 p_FVAL3 IN VARCHAR2,
82 p_FNAME4 IN VARCHAR2,
83 p_FVAL4 IN VARCHAR2,
84 p_FNAME5 IN VARCHAR2,
85 p_FVAL5 IN VARCHAR2,
86 p_FNAME6 IN VARCHAR2,
87 p_FVAL6 IN VARCHAR2,
88 p_FNAME7 IN VARCHAR2,
89 p_FVAL7 IN VARCHAR2,
90 p_FNAME8 IN VARCHAR2,
91 p_FVAL8 IN VARCHAR2,
92 p_FNAME9 IN VARCHAR2,
93 p_FVAL9 IN VARCHAR2
94
95 )
96 RETURN VARCHAR2 IS
97 --
98 -- needed as we are accessing via a select
99 pragma autonomous_transaction;
100 --
101 l_procedure VARCHAR2(31) := 'manage_user_entry';
102 l_result VARCHAR2(20) := 'SUCCESS';
103 l_app_id varchar2(80) := NULL;
104 l_APP_USER varchar2(80);
105 l_APP_PWD varchar2(80);
106 l_sso_user varchar2(80);
107 l_FNAME1 varchar2(80) := p_FNAME1;
108 l_FVAL1 varchar2(80) := p_FVAL1;
109 l_FNAME2 varchar2(80) := p_FNAME2;
110 l_FVAL2 varchar2(80) := p_FVAL2;
111 l_FNAME3 varchar2(80) := p_FNAME3;
112 l_FVAL3 varchar2(80) := p_FVAL3;
113 l_FNAME4 varchar2(80) := p_FNAME4;
114 l_FVAL4 varchar2(80) := p_FVAL4;
115 l_FNAME5 varchar2(80) := p_FNAME5;
116 l_FVAL5 varchar2(80) := p_FVAL5;
117 l_FNAME6 varchar2(80) := p_FNAME6;
118 l_FVAL6 varchar2(80) := p_FVAL6;
119 l_FNAME7 varchar2(80) := p_FNAME7;
120 l_FVAL7 varchar2(80) := p_FVAL7;
121 l_FNAME8 varchar2(80) := p_FNAME8;
122 l_FVAL8 varchar2(80) := p_FVAL8;
123 l_FNAME9 varchar2(80) := p_FNAME9;
124 l_FVAL9 varchar2(80) := p_FVAL9;
125
126 l_USER_PREFS varchar2(80) := 'none';
127
128 l_error varchar2(2000);
129
130 --
131 BEGIN
132 --
133
134 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
135 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
136 MODULE => g_module || '.' || l_procedure,
137 MESSAGE => 'Entering ' || l_procedure);
138 END IF;
139
140
141 -- get sso user
142 l_sso_user := get_sso_user(p_user_id);
143
144 -- if a problem happened whilst getting the sso user
145 -- an exception will have been raised
146 -- so with no exception, we can continue
147
148 BEGIN
149
150 -- get the existing (if any) user info for this app
151
152 hr_sso_utl.PSTORE_GET_USERINFO
153 (
154 p_ext_app_id,
155 l_sso_user,
156 l_APP_USER,
157 l_APP_PWD,
158 l_FNAME1, l_FVAL1,
159 l_FNAME2, l_FVAL2,
160 l_FNAME3, l_FVAL3,
161 l_FNAME4, l_FVAL4,
162 l_FNAME5, l_FVAL5,
163 l_FNAME6, l_FVAL6,
164 l_FNAME7, l_FVAL7,
165 l_FNAME8, l_FVAL8,
166 l_FNAME9, l_FVAL9,
167 l_USER_PREFS);
168
169 EXCEPTION
170 WHEN OTHERS THEN
171
172 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
173 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
174 MODULE => g_module || '.' || l_procedure,
175 MESSAGE => 'No user found, using defaults');
176 END IF;
177
178 END;
179
180 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
181 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
182 MODULE => g_module || '.' || l_procedure,
183 MESSAGE => 'APP_USER is ' || l_APP_USER);
184 END IF;
185
186 -- set SSO details
187 IF (l_APP_PWD IS NULL) THEN
188
189 -- create user for the first time
190 -- can not store a null password in the SSO
191 -- so user can not already exist
192
193 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
194 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
195 MODULE => g_module || '.' || l_procedure,
196 MESSAGE => 'creating new user');
197 END IF;
198
199
200 --reset the f1 to fn values,they might have been overriden
201 --while using getUserInfo method
202 l_FNAME1 := p_FNAME1;
203 l_FVAL1 := p_FVAL1;
204 l_FNAME2 := p_FNAME2;
205 l_FVAL2 := p_FVAL2;
206 l_FNAME3 := p_FNAME3;
207 l_FVAL3 := p_FVAL3;
208 l_FNAME4 := p_FNAME4;
209 l_FVAL4 := p_FVAL4;
210 l_FNAME5 := p_FNAME5;
211 l_FVAL5 := p_FVAL5;
212 l_FNAME6 := p_FNAME6;
213 l_FVAL6 := p_FVAL6;
214 l_FNAME7 := p_FNAME7;
215 l_FVAL7 := p_FVAL7;
216 l_FNAME8 := p_FNAME8;
217 l_FVAL8 := p_FVAL8;
218 l_FNAME9 := p_FNAME9;
219 l_FVAL9 := p_FVAL9;
220
221 BEGIN
222 hr_sso_utl.pstore_add_userinfo
223 (
224 p_app_id => p_ext_app_id,
225 p_ssouser => l_sso_user,
226 p_app_user => p_app_user,
227 p_app_pwd => p_app_pwd,
228 p_fname1 => l_FNAME1,
229 p_fval1 => l_FVAL1,
230 p_fname2 => l_FNAME2,
231 p_fval2 => l_FVAL2,
232 p_fname3 => l_FNAME3,
233 p_fval3 => l_FVAL3,
234 p_fname4 => l_FNAME4,
235 p_fval4 => l_FVAL4,
236 p_fname5 => l_FNAME5,
237 p_fval5 => l_FVAL5,
238 p_fname6 => l_FNAME6,
239 p_fval6 => l_FVAL6,
240 p_fname7 => l_FNAME7,
241 p_fval7 => l_FVAL7,
242 p_fname8 => l_FNAME8,
243 p_fval8 => l_FVAL8,
244 p_fname9 => l_FNAME9,
245 p_fval9 => l_FVAL9,
246 p_user_prefs => l_USER_PREFS);
247
248 EXCEPTION
249 WHEN OTHERS THEN
250 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
251 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
252 MODULE => g_module || '.' || l_procedure,
253 MESSAGE => 'new user error (pstore_add_userinfo) - '
254 || ' has the user ever signed in via Portal? - '
255 || sqlerrm);
256 END IF;
257 RAISE;
258 END;
259
260 ELSE
261 -- updating current user
262
263
264 BEGIN
265 hr_sso_utl.pstore_modify_userinfo
266 (
267 p_app_id => p_ext_app_id,
268 p_ssouser => l_sso_user,
269 p_app_user => p_app_user,
270 p_app_pwd => p_app_pwd,
271 p_fname1 => l_FNAME1,
272 p_fval1 => l_FVAL1,
273 p_fname2 => l_FNAME2,
274 p_fval2 => l_FVAL2,
275 p_fname3 => l_FNAME3,
276 p_fval3 => l_FVAL3,
277 p_fname4 => l_FNAME4,
278 p_fval4 => l_FVAL4,
279 p_fname5 => l_FNAME5,
280 p_fval5 => l_FVAL5,
281 p_fname6 => l_FNAME6,
282 p_fval6 => l_FVAL6,
283 p_fname7 => l_FNAME7,
284 p_fval7 => l_FVAL7,
285 p_fname8 => l_FNAME8,
286 p_fval8 => l_FVAL8,
287 p_fname9 => l_FNAME9,
288 p_fval9 => l_FVAL9,
289 p_user_prefs => l_USER_PREFS);
290
291 EXCEPTION
292 WHEN OTHERS THEN
293 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
294 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
295 MODULE => g_module || '.' || l_procedure,
296 MESSAGE => 'existing user error - ' || sqlerrm);
297 END IF;
298 RAISE;
299 END;
300 END IF;
301
302 COMMIT;
303
304
305 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
306 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
307 MODULE => g_module || '.' || l_procedure,
308 MESSAGE => 'Exiting ' || l_procedure);
309 END IF;
310
311
312 RETURN(l_result);
313
314 EXCEPTION
315 WHEN NO_DATA_FOUND THEN
316 -- if we raise no_data_found to a calling
317 -- select, it just interprets it as no data
318 -- and not as an exception
319 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
320 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
321 MODULE => g_module || '.' || l_procedure,
322 MESSAGE => 'Error whilst managing user entry' ||
323 ' - ' || sqlerrm);
324 END IF;
325 RAISE program_error;
326 WHEN OTHERS THEN
327 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
328 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
329 MODULE => g_module || '.' || l_procedure,
330 MESSAGE => 'Error whilst managing user entry' ||
331 ' - ' || sqlerrm);
332 END IF;
333 RAISE;
334 --
335 END manage_user_entry;
336 --
337
338
339 END hr_generic_int;