File: event_trigger.sql

package info (click to toggle)
credcheck 4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 424 kB
  • sloc: ansic: 1,994; sql: 859; makefile: 21; sh: 1
file content (30 lines) | stat: -rw-r--r-- 845 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

-- Drop the event trigger if present
DROP EVENT TRIGGER IF EXISTS valid_until_warning CASCADE;

-- Add event trigger for valid until warning
CREATE OR REPLACE FUNCTION warning_valid_until()
  RETURNS event_trigger AS
$$
DECLARE
   warn_days integer;
BEGIN
	SELECT ((extract(epoch from valuntil) - extract(epoch from current_timestamp))/86400)::integer
		INTO warn_days
		FROM pg_catalog.pg_shadow WHERE usename = SESSION_USER ;
	
	IF ( warn_days <= current_setting('credcheck.password_valid_warning', true)::integer ) THEN
		RAISE WARNING 'your password will expire in % days, please renew your password!', warn_days;
	END IF;
END;
$$
LANGUAGE plpgsql
SECURITY DEFINER
;

-- trigger definition
CREATE EVENT TRIGGER valid_until_warning
  ON login
  EXECUTE FUNCTION warning_valid_until();
ALTER EVENT TRIGGER valid_until_warning ENABLE ALWAYS;