diklabumanager.psm1
<#
VERBEN: find ... findet einen oder mehrere Objekte nach Namen. '%' ist WildCard get .... findet ein Objekt durch angabe des PK set .... ändert Attribute eines Objektes durch angabe des PK new .... erzeugt ein neuen Eintrag delete . ein Objekt löschen NOMEN pupil ........ Schüler course ....... Klasse company ...... Firma instructor ... Ausbilder coursemember . Kursmitgliedschaft #> $global:auth_token function getKeys() { $logins=@{} if (Test-Path "$HOME\diklabu2.conf") { $lf = Get-Content "$HOME\diklabu2.conf" | ConvertFrom-Json $lf.PSObject.Properties | ForEach-Object { $logins[$_.Name]=$_.Value } } return $logins; } $global:logins=getKeys function setKey([String]$key,[String]$url,[PSCredential]$cred) { $global:logins=getKeys $login = "" | Select-Object "location","user","password" $login.location = $url if ($cred -ne $null) { $login.user = $cred.UserName $login.password = $cred.Password | ConvertFrom-SecureString } $logins[$key]=$login $logins | ConvertTo-Json | Set-Content "$HOME\diklabu2.conf" } <# .Synopsis Server URL Setzen .DESCRIPTION Setzt global die Server URL .EXAMPLE Set-Diklabuserver -uri http://localhost:8080/Diklabu/api/v1/ #> function Set-Diklabuserver { Param ( # Hilfebeschreibung zu Param1 [Parameter(Mandatory=$true,Position=0)] [String]$uri ) Begin { setKey "diklabu" $uri $null } } <# .Synopsis Abfrage des Diklabuservers .DESCRIPTION Abfrage des Diklabuservers .EXAMPLE Get-Diklabuserver #> function Get-Diklabuserver { Begin { return $global:logins["diklabu"].location } } <# .Synopsis Anmelden am Klassenbuch .DESCRIPTION Anmelden beim Klassenbuch und Sessionkey beziehen .EXAMPLE login-diklabu -credential (get-Credential) .EXAMPLE login-diklabu -credential (get-Credential) -URI http://localhost:8080/Diklabu/api/v1/ #> function Login-Diklabu { Param ( # Benutzername [Parameter(Position=0)] [PSCredential]$credential, # URI des Diklabu Servers [Parameter(Position=1)] [String]$uri ) Begin { if (-not $uri -or -not $credential) { if ($Global:logins["diklabu"]) { $uri=$Global:logins["diklabu"].location; if (-not $Global:logins["diklabu"].password) { Write-Error "Bitte credentials angeben!" break; } $password = $Global:logins["diklabu"].password | ConvertTo-SecureString $credential = New-Object System.Management.Automation.PsCredential($Global:logins["diklabu"].user,$password) } else { Write-Error "Bitte uri und credentials angeben!" break; } } $data=echo "" | Select-Object -Property "benutzer","kennwort" $data.benutzer=$credential.userName $data.kennwort=$credential.GetNetworkCredential().Password $headers=@{} $headers["content-Type"]="application/json" $headers["service_key"]=$user+"f80ebc87-ad5c-4b29-9366-5359768df5a1"; $r=Invoke-RestMethod -Method Post -Uri ($uri+"auth/login") -Headers $headers -Body (ConvertTo-Json $data) $global:auth_token=$r.auth_token $global:server=$uri setKey "diklabu" $uri $credential return $r; } } <# .Synopsis Abfragen der Anmeldedaten .DESCRIPTION Abfragen der Anmeldedaten .EXAMPLE get-diklabu #> function Get-Diklabu { Param ( ) Begin { $Global:logins["diklabu"] } } |