Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Käyttäjätietojen muokkausten estäminen muilta kuin pääkäyttäjiltä #1347

Open
MikkoLiimatainen opened this issue Aug 7, 2024 · 9 comments
Assignees
Labels
local enhancement Koha-Suomessa kehitettävä toiminnallisuus

Comments

@MikkoLiimatainen
Copy link

Kehitysehdotukseni

Pääkäyttäjäpalaverissa 6.8.2024 oli puhetta Vaskissa tehdystä JS-skriptistä, jolla estetään virkailijoita muuttamasta käyttäjän etunimeä, sukunimeä ja kirjastokortin numeroa virkailija-, api- ja automaattikäyttäjiltä. Virkailijoita estetään myös luomasta uusia näitä tyyppiä olevia käyttäjiä ja muuttamasta olemassa olevia käyttäjiä näiksi tyypeiksi. Ainoastaan pääkäyttäjillä on oikeus tehdä näitä käyttäjiä ja muokata olemassa olevien kaikkia tietoja.

Koska kiinnostusta löytyi muualtakin, niin tässä on skripti testattavaksi:

/// ALKU ///
// Virkailijatunnusten muokkausten esto
$(document).ready(function() {
	if (window.location.pathname.includes('/cgi-bin/koha/members/memberentry.pl')){
		var e = document.getElementById("categorycode_entry");
		var value = e.value;
        var superlib = $('span#logged-in-info-full').children().hasClass('is_superlibrarian');
		if (!superlib && (value=='VIRKAILIJA' || value=='AUTOM' || value=='API')){ // Muokkaa tähän asiakastyyppien tunnukset. Muokkausten esto tehdään tässä määritellyille asiakastyypeille, jotka erotellaan toisistaan ||-operaattoreilla.
			e.disabled = true;
            $('input#cardnumber').prop('disabled',true);
            $('input#surname').prop('disabled',true);
            $('input#firstname').prop('disabled',true);
		}
        if (!superlib){
            $('select#categorycode_entry optgroup[label="Tilastoyksikkö"]').hide(); // Muokkaa näihin piilotettavien asiakastyyppien tyypit. Piilotus poistaa nämä tyypit näkyvistä asiakasmuokkauksen tyyppi-pudotusvalikosta.
            $('select#categorycode_entry optgroup[label="Henkilökunta"]').hide();
        }
	}
    if (window.location.pathname.includes('/cgi-bin/koha/members/members-home.pl')){
        var superlib = $('span#logged-in-info-full').children().hasClass('is_superlibrarian');
        if (!superlib){
            $('div#new-patron-button ul li a:contains("Automaatti")').parent().hide();  // Muokkaa näihin asiakastyyppien nimet. Nämä asiakastyypit piilotetaan uuden asiakkaan lisäyksen pudotusvalikosta.
            $('div#new-patron-button ul li a:contains("Kirjaston työntekijä")').parent().hide();
            $('div#new-patron-button ul li a:contains("Z API Z")').parent().hide();
        }
    }
});
/// LOPPU ///

Koodia on testattu Vaskin testissä ja nextissä. Koodia saattaa joutua muuttamaan oman kimpan ympäristöön sopivaksi. Koodiin on kommentoitu, mitä asiakastyyppien tietoja koodi tarvitsee missäkin kohtaa. Koitin myös kevyesti selittää kommenteissa, mitä koodin eri osat tekevät.

Tätä voisivat kiinnostuneet kimpat testailla, jos tästä olisi vaikka ihan yhteiseksi plugariksi. Vaskilla on ajatuksena ottaa tämä käyttöön jossain muodossa lähiaikoina ja olisi mukava saada muilta vielä kommentteja ja parannusehdotuksia.

Jotain muuta?

No response

@MikkoLiimatainen MikkoLiimatainen added the local enhancement Koha-Suomessa kehitettävä toiminnallisuus label Aug 7, 2024
@lmstrand lmstrand self-assigned this Aug 7, 2024
@pknuuti
Copy link

pknuuti commented Aug 7, 2024

Tein muutokset Vaaran nextille skriptin mukaisesti ja testasin kirjautumalla tavallisena virkailijana. En päässyt muuttamaan käyttäjän nimikenttiä eikä kirjastokortin numeroa. Asiakastyypin muuttaminenkaan ei onnistunut.
Tämä on hyvä juttu!

@AnneliO
Copy link
Contributor

AnneliO commented Aug 7, 2024

VIRKAILIJA-tyyppisen tunnuksen muokkauksessa epäaktivoituu myös Tyyppi-valikko. Mikä sen tekee? En hoksaa tuossa koodissa sellaista kohtaa. Vai onko se jonkinlainen lisäominaisuus tuolle, että Henkilökunta-vaihtoehto piilotetaan valikosta? Siis silloin, kun ollaan muokkaamassa Henkilökunta-tyyppistä tunnusta? Ei tuo sinänsä varmaan haittaa, mutta hämmensi. :)

@MikkoLiimatainen
Copy link
Author

VIRKAILIJA-tyyppisen tunnuksen muokkauksessa epäaktivoituu myös Tyyppi-valikko. Mikä sen tekee? En hoksaa tuossa koodissa sellaista kohtaa. Vai onko se jonkinlainen lisäominaisuus tuolle, että Henkilökunta-vaihtoehto piilotetaan valikosta? Siis silloin, kun ollaan muokkaamassa Henkilökunta-tyyppistä tunnusta? Ei tuo sinänsä varmaan haittaa, mutta hämmensi. :)

Tuolla on rivi e.disabled = true, joka sen tekee. En tuota itsekään enää muistanut, että sekin siellä on, mutta se on tosiaan ihan kokemusten perusteella tarpeen, ettei näiden tyyppejä muuteta.

@pirliis
Copy link

pirliis commented Aug 9, 2024

Testasin OUTIn testillä ja nextillä. Näyttäisi toimivan kuin pitääkin. Tarpeellinen muutos. :)

@MikkoLiimatainen
Copy link
Author

Tein koodista vähän selkeämmän version, jossa ei tarvitse määritellä erikseen eri piilotuksia, vaan ainoastaan määritellä categories muuttujaan käyttäjätyyppien tunnukset. Testeissäni tämä toimii samalla tavalla kuin aiemminkin, mutta ylläpito helpottuu.

/// ALKU ///
// Virkailijatunnusten muokkausten esto
$(document).ready(function() {
    if (window.location.pathname.includes('/cgi-bin/koha/members/memberentry.pl') || window.location.pathname.includes('/cgi-bin/koha/members/members-home.pl')){
        var superlib = $('span#logged-in-info-full').children().hasClass('is_superlibrarian');
        var categories = ["VIRKAILIJA", "AUTOM", "API"];
        if (window.location.pathname.includes('/cgi-bin/koha/members/memberentry.pl')){
            var e = document.getElementById("categorycode_entry");
            var value = e.value;
            if (!superlib && categories.includes(value)){
                e.disabled = true;
                $('input#cardnumber').prop('disabled',true);
                $('input#surname').prop('disabled',true);
                $('input#firstname').prop('disabled',true);
            }
            if (!superlib){
                categories.forEach(piilotus);
                function piilotus(item) {
                    $('select#categorycode_entry option[value="'+ item +'"]').parent().hide();
                }
            }
        }
        if (window.location.pathname.includes('/cgi-bin/koha/members/members-home.pl')){
            if (!superlib){
                categories.forEach(piilotus);
                function piilotus(item) {
                    $('div#new-patron-button ul li a[href*="categorycode=' + item + '"]').parent().hide();
                }
            }
        }
    }
});
/// LOPPU ///

@AnneliO
Copy link
Contributor

AnneliO commented Aug 26, 2024

Asiantuntijaryhmä 26.8.2024: Tehdään JS-liitännäiseksi siten, että asiakastyypit voi määrittää konfiguroinnissa.

@lmstrand
Copy link
Collaborator

Lisätty määriteltäväksi pluginiksi nexteille.

@LastuJanneS
Copy link

Meillä tuo Mikon laittama viimeisin skripti aiheutti sellaisen sivuvaikutuksen testillä, että jos henkilökunta teki omaan virkailijatietueeseensa minkäänlaisia muutoksia, niin cardnumber-kenttä menee jostain syystä nulliksi tallentamisen yhteydessä ja Koha heittää virkailijan pihalle. Sen verran ehdin testata että liittyi tuohon $('input#cardnumber').prop('disabled',true); koodinpätkään, sen poistamalla virhettä ei enää tullut.

@MikkoLiimatainen
Copy link
Author

MikkoLiimatainen commented Sep 18, 2024

Juu, pahoittelut, etten tänne ole päivittänyt tätä tietoa. Laitoin huomion tuohon plugarin tikettiin ja Lari tarjosi vaihtoehtona readonlyä: $('input#cardnumber').prop("readonly", true);

Tuo ajaa saman asian, mutta ilman korttinumeron pois tipahtamista. Kaikki disabloinnit kannattaa siis varmuuden vuoksi tehdä readonlynä, jos skriptiversiota haluaa käyttää.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
local enhancement Koha-Suomessa kehitettävä toiminnallisuus
Projects
Status: Odottaa versionvaihtoa
Development

No branches or pull requests

6 participants