diff --git a/application/models/person/Kontaktverifikation_model.php b/application/models/person/Kontaktverifikation_model.php
new file mode 100644
index 000000000..b15439edb
--- /dev/null
+++ b/application/models/person/Kontaktverifikation_model.php
@@ -0,0 +1,42 @@
+dbTable = 'public.tbl_kontakt_verifikation';
+ $this->pk = 'kontakt_verifikation_id';
+ }
+
+ /**
+ * Gets contact verification for a person and a verification code
+ * @param person_id
+ * @param kontakttyp
+ * @param verifikation_code
+ * @param expiration_days number of days after which verifikation code expires
+ * @return object success or error
+ */
+ public function getKontaktVerifikation($person_id, $kontakttyp, $verifikation_code, $expiration_days = 1)
+ {
+ $qry = "
+ SELECT
+ kt.kontakt_id,
+ kv.verifikation_code
+ FROM
+ public.tbl_kontakt_verifikation kv
+ JOIN public.tbl_kontakt kt USING(kontakt_id)
+ WHERE kt.person_id = ?
+ AND kt.kontakttyp = ?
+ AND kv.verifikation_code = ?
+ AND kv.erstelldatum >= NOW() - INTERVAL '".$this->escape($expiration_days)." days'
+ ORDER BY
+ kt.kontakt_id DESC
+ LIMIT 1";
+
+ return $this->execQuery($qry, array($person_id, $kontakttyp, $verifikation_code));
+ }
+}
diff --git a/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php b/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php
index ccc0a5827..b204d45aa 100644
--- a/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php
+++ b/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php
@@ -28,3 +28,51 @@ if($result = $db->db_query("SELECT 1 FROM public.tbl_adressentyp WHERE adressent
echo '
Neue Adressentyp Meldeadresse in public.tbl_adressentyp hinzugefügt';
}
}
+
+if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_kontakt_verifikation LIMIT 1'))
+{
+ $qry = "CREATE SEQUENCE public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ START WITH 1
+ CACHE 1
+ NO CYCLE;
+
+ CREATE TABLE public.tbl_kontakt_verifikation
+ (
+ kontakt_verifikation_id integer DEFAULT nextval('public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq'::regclass),
+ kontakt_id integer UNIQUE NOT NULL,
+ verifikation_code varchar(32) UNIQUE NOT NULL,
+ erstelldatum timestamp without time zone,
+ verifikation_datum timestamp without time zone,
+ app varchar(32),
+ CONSTRAINT pk_tbl_kontakt_verifikation_id PRIMARY KEY (kontakt_verifikation_id)
+ );
+
+ ALTER TABLE public.tbl_kontakt_verifikation ADD CONSTRAINT fk_tbl_kontakt_verifikation_kontakt_id FOREIGN KEY (kontakt_id)
+ REFERENCES public.tbl_kontakt (kontakt_id)
+ ON DELETE CASCADE ON UPDATE CASCADE;
+
+ ALTER TABLE public.tbl_kontakt_verifikation ADD CONSTRAINT fk_tbl_kontakt_verifikation_app FOREIGN KEY (app)
+ REFERENCES system.tbl_app (app)
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ COMMENT ON TABLE public.tbl_kontakt_verifikation IS 'Contact verification';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.kontakt_id IS 'Contact to verify';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.verifikation_code IS 'Code generated for verification';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.erstelldatum IS 'Time when verification code was generated';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.verifikation_datum IS 'Time when contact was verified';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.app IS 'App where contact was verified';
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_kontakt_verifikation TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_kontakt_verifikation TO vilesci;
+ GRANT SELECT, UPDATE ON public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq TO web;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_kontakt_verifikation: '.$db->db_last_error().'
';
+ else
+ echo ' public.tbl_kontakt_verifikation: Tabelle hinzugefuegt
';
+}