DBA Data[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;