Merge branch 'master' into fradrive/newletter

This commit is contained in:
Steffen Jost 2024-06-19 17:53:16 +02:00
commit e5cbd096ce
28 changed files with 291 additions and 217 deletions

View File

@ -2,6 +2,89 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [27.4.67](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.66...v27.4.67) (2024-06-17)
### Bug Fixes
* **avs:** fix rare avs update bug involving values optional in avs but compulsory in user entity ([a6d0105](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/a6d0105903caba0eb47715eeb217ea2c53d99e23))
## [27.4.66](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.65...v27.4.66) (2024-06-12)
### Bug Fixes
* **avs:** fix [#164](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/164) by removing companyPersonalNumber and companyDepartment upon ldap sync expiry ([da74b95](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/da74b957295caefb010c90297af557f997b18e7c))
* **avs:** fix [#165](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/165) by updating userCompanyDepartmen and userCompanyPersonalNumer ([76e0710](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/76e0710c7b54a40d2c236299ea4fabd009d3f35a))
* **avs:** repeated avs sync enqueue no longe violates duplicate db uniqueness constraints ([996e6a0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/996e6a0ce563bda96638863efd40ce38fce8ac2b))
* **avs:** update email on manual company switch ([9fd80f2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/9fd80f25526eefce217c659f6ea2991771c11ece)), closes [#164](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/164)
## [27.4.65](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.64...v27.4.65) (2024-06-10)
### Bug Fixes
* **avs:** company update no longer fails on duplicate key ([bb101de](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/bb101dee7b40cd3d8ba10a559af642396d5b87b5))
* **avs:** profile page correctly indicates automatic email and postal addresses ([e553ad4](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/e553ad4358a71fc96fa946533f0441d4af5202c9))
* **avs:** steps towards [#164](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/164) ([aa1d230](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/aa1d230e497f0e59dbea9f4fd5c7da773f5a4280))
* **lette:** adjust window for new pin letters ([6acfd84](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/6acfd849aeb473a018f7a9c34e69f61b3c22b6f8))
## [27.4.64](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.63...v27.4.64) (2024-05-27)
## [27.4.63](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.62...v27.4.63) (2024-05-23)
### Bug Fixes
* **avs:** company update checks uniques and ignores those updates if necessary ([9451d90](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/9451d90a9e00d08a2a7d169c4674d99ff1018ee9))
## [27.4.62](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.61...v27.4.62) (2024-05-19)
### Bug Fixes
* **avs:** avs update on company shorthands working now ([ff2347b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ff2347b1c950c7a2bb281cdcd07a52925e23b9f0))
* **avs:** deal gracefully with empty card status results ([ccf9340](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ccf934044938277d821eb4b9ea08a8a134e84189))
## [27.4.61](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.60...v27.4.61) (2024-05-06)
### Bug Fixes
* **avs:** fix [#76](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/76) allowing company changes and fix [#69](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/69) ([3c4a0b8](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/3c4a0b86c1e3d8a28405ab73b964ba1b988d2822))
* **build:** add missing tex packages ([6750798](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/6750798920dc76882f4e8ef39b47018fb7b77e44))
* **build:** workaround non modal form result handler ([2fbd281](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/2fbd28154cd7aea282eaa2604a42263ac90e3b1e))
## [27.4.60](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.59...v27.4.60) (2024-04-26)
### Bug Fixes
* **avs:** disable caching by 0s no longer causes an exception ([d578e80](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d578e80282c8bf6872fa6040514a9d2c85582707))
* **avs:** fix [#152](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/152) by providing new online avs card filter throughout ([ad2375b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ad2375b338866f37c8b7825a9eab12fa6c9abccb))
* **avs:** fix [#36](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/36) and remove dead code ([4f8850b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/4f8850b3b4f710f9cf59163175b27599c97ac5c0))
* **avs:** fix [#69](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/69) by redesigning live avs status page ([697979c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/697979c277ce7198f4573d6cea30373a1fcc17da))
* **avs:** invalidate contact cache after licence writes ([c382be9](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/c382be9325fcc92e13cb5dc2ad7c20b198db26fc))
* **avs:** several minor bugfixes ([a52c8a6](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/a52c8a6ad709029a8822d383370b0d2bdd25e7d7)), closes [#158](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/158)
* **build:** add import needed for production only ([724e4a0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/724e4a0bec343ab9c6d172d8e93b8040bbe3fe7d))
* **build:** migration needs to check for table existens first ([f439ea4](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f439ea45af9b1c4a029fc1b9b6383f3c97194ed0))
* **build:** minor error non-development code ([66eaa4f](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/66eaa4f7dcc124b631414d4a1adbe555a4029100))
* **build:** missing parameters added ([83afdf7](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/83afdf760f93fc1a553de3a122b444412ed84ba4))
* **build:** simple type error ([d56a1cd](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d56a1cdd46259418faa737b9bb0a9d9ffba442e0))
* **build:** type error in test db fill data ([f465cc9](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f465cc972367233a4944dd0aeb81b223a187bb85))
* **doc:** minor haddock problems ([d4f8a6c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d4f8a6c77b2a4a4540935f7f0beca0d0605508c8))
* **firm:** supervisor filter acts weird in test environment ([b566e59](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/b566e59eb1325485fe26dc4f0b5cb63165c58f74))
* **i18n:** fix some bad plurals ([890f8ad](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/890f8ad8b60115533faa6b99f4c4504243cbfb1d))
* **lint:** remove minor superfluous dollar ([64a1233](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/64a123387f3539b73649d02a6ecd97de577097e6))
* **qualification:** fix [#159](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/159) by removing an misleadingly named column for user qualification table ([fd6a538](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/fd6a5384d3517958a3c7726e32eed3bad197a591))
## [27.4.59](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.58...v27.4.59) (2024-02-13)
### Bug Fixes
* **sql:** remove potential bug in relation to missing parenthesis after not_ ([42695cf](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/42695cf5ef9f21691dc027f1ec97d57eec72f03e))
## [27.4.58](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v27.4.57...v27.4.58) (2024-02-08)

6
fixtest.sh Executable file
View File

@ -0,0 +1,6 @@
if [[ ! -d .stack-work-test ]]; then
mv -vT .stack-work .stack-work-test
[[ -d .stack-work-build ]] && mv -vT .stack-work-build .stack-work
else
echo "Directory .stack-work-test exists already."
fi

View File

@ -1,11 +1,9 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
# SPDX-FileCopyrightText: 2022-24 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>,Steffen Jost <s.jost@fraport.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
FAQLoginExpired: Mein Passwort ist abgelaufen und muss erneuert werden
FAQNoCampusAccount: Ich habe keine Fraport AG Kennung (Büko-Login); kann ich trotzdem Zugang zum System erhalten?
FAQForgottenPassword: Ich habe mein Passwort vergessen
FAQCampusCantLogin: Ich kann mich mit meiner Fraport AG Kennung (Büko-Login) nicht anmelden
FAQCourseCorrectorsTutors: Wie kann ich Ausbilder oder Korrektoren für meine Kursart konfigurieren?
FAQNotLecturerHowToCreateCourses: Wie kann ich eine neue Kursart anlegen?
FAQExamPoints: Warum kann ich bei meiner Klausur keine Punkte eintragen?
FAQInvalidCredentialsAdAccountDisabled: Ich kann mich nicht anmelden und bekomme die Meldung „Benutzereintrag gesperrt“
FAQNotLecturerHowToCreateCourses: Wie kann ich eine neue Kursart anlegen?

View File

@ -1,11 +1,9 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
# SPDX-FileCopyrightText: 2022-24 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>,Steffen Jost <s.jost@fraport.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
FAQLoginExpired: My password expired
FAQNoCampusAccount: I don't have Fraport AG credentials (Büko login); can I still get access?
FAQForgottenPassword: I have forgotten my password
FAQCampusCantLogin: I can't log in using my Fraport AG credentials (Büko login)
FAQCourseCorrectorsTutors: How can I add instructors or correctors to my course?
FAQNotLecturerHowToCreateCourses: How can I create new courses?
FAQExamPoints: Why can't I enter achievements for my exam as points?
FAQInvalidCredentialsAdAccountDisabled: I can't log in and am instead given the message “Account disabled”
FAQNotLecturerHowToCreateCourses: How can I create new courses?

View File

@ -25,7 +25,8 @@ TableQualificationSapExport: SAP
TableQualificationSapExportTooltip: Wird die Qualifikation an das SAP übermittelt? Betrifft nur Benutzer mit Fraport Personalnummer.
LmsQualificationValidUntil: Gültig bis
TableQualificationLastRefresh: Zuletzt erneuert
TableQualificationLastNotified: Letzte Benachrichtigung
TableQualificationLastNotified: Letzte Benachrichtigung über erfolgte Gültigkeitsänderung
TableQualificationLastNotifiedTooltip: Hier werden ausschließlich Benachrichtigungen berücksichtigt, die über einen bereits erfolgten Ablauf/Entzug/Wiedererteilung informieren. Dies ignoriert insbesondere reguläre Verlängerung, z.B. durch E-Learning.
TableQualificationFirstHeld: Erstmalig
TableQualificationBlockedDue: Entzug
TableQualificationBlockedTooltip: Wann wurde die Qualifikation vorübergehend außer Kraft gesetzt und warum wurde dies veranlasst?

View File

@ -25,7 +25,8 @@ TableQualificationSapExport: Sent to SAP
TableQualificationSapExportTooltip: Is this qualification transmitted to SAP? Only applies to qualification holder having a Fraport AG personnel number.
LmsQualificationValidUntil: Valid until
TableQualificationLastRefresh: Last renewed
TableQualificationLastNotified: Last notified
TableQualificationLastNotified: Last notified about validity change
TableQualificationLastNotifiedTooltip: The date of the last notification about any already effective change in validity due to revocation or reissue. This does not entail regular validity extensions, e.g. due to e-learning.
TableQualificationFirstHeld: First held
TableQualificationBlockedDue: Revocations
TableQualificationBlockedTooltip: Why and when was this qualification temporarily suspended?

View File

@ -69,7 +69,7 @@ QualificationUser
lastRefresh Day -- lastRefresh > validUntil possible, if Qualification^elearningOnly == False
firstHeld Day -- first time the qualification was earned, should never change
scheduleRenewal Bool default=true -- if false, no automatic renewal is scheduled and the qualification expires
lastNotified UTCTime default=now() -- last notficiation about being invalid
lastNotified UTCTime default=now() -- last notficiation about actual licence validity changes (does not entail e-learning notifications)
-- Reasons and temporary revocations are implemented through QualificationUserBlock
-- TODO: adjust SAP interface to transmit end dates
UniqueQualificationUser qualification user

View File

@ -1,3 +1,3 @@
{
"version": "27.4.58"
"version": "27.4.67"
}

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "uni2work",
"version": "27.4.58",
"version": "27.4.67",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "uni2work",
"version": "27.4.58",
"version": "27.4.67",
"description": "",
"keywords": [],
"author": "",

View File

@ -1,5 +1,5 @@
name: uniworx
version: 27.4.58
version: 27.4.67
dependencies:
- base
- yesod

View File

@ -193,7 +193,7 @@ handleAddUserR tid ssh csh tdesc ttyp = do
currentRoute <- fromMaybe (error "postCAddUserR called from 404-handler") <$> getCurrentRoute
(_ , registerConfirmResult) <- runButtonForm FIDCourseRegisterConfirm
-- $logDebugS "***AbortProblem***" $ tshow registerConfirmResult
-- $logDebugS "***AbortProblem***" $ tshow registerConfirmResult
prefillUsers <- case registerConfirmResult of
Nothing -> return mempty
(Just BtnCourseRegisterAbort) -> do

View File

@ -103,7 +103,7 @@ runInterfaceLogTable interfs@(reqIfs,_) = do
mkInterfaceLogTable :: (Bool -> Widget) -> ReqBanInterfaceHealth -> DB ([(Text,Bool)], Widget)
mkInterfaceLogTable flagError interfs@(reqIfs, banIfs) = do
-- $logWarnS "DEBUG" $ tshow ([ihDebugShow x | x<- reqIfs], [ihDebugShow x | x<- banIfs])
-- $logWarnS "DEBUG" $ tshow ([ihDebugShow x | x<- reqIfs], [ihDebugShow x | x<- banIfs])
void $ liftHandler $ timeoutHandler 42000001 $ runDB $ runInterfaceChecks interfs
now <- liftIO getCurrentTime
dbTableDB ilvalidator DBTable{dbtColonnade=colonnade now, ..}

View File

@ -1,4 +1,4 @@
-- SPDX-FileCopyrightText: 2022-2023 Felix Hamann <felix.hamann@campus.lmu.de>, Gregor Kleen <gregor@kleen.consulting>, Sarah Vaupel <sarah.vaupel@ifi.lmu.de>, Steffen Jost <jost@tcs.ifi.lmu.de>, Winnie Ros <winnie.ros@campus.lmu.de>
-- SPDX-FileCopyrightText: 2022-2024 Felix Hamann <felix.hamann@campus.lmu.de>, Gregor Kleen <gregor@kleen.consulting>, Sarah Vaupel <sarah.vaupel@ifi.lmu.de>, Steffen Jost <jost@tcs.ifi.lmu.de>, Winnie Ros <winnie.ros@campus.lmu.de>, Steffen Jost <s.jost@fraport.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
@ -13,12 +13,12 @@ import Data.Map ((!))
import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
-- import qualified Database.Esqueleto.Legacy as E
-- import qualified Database.Esqueleto.Utils as E
import Development.GitRev
import Auth.LDAP (ADError(..), ADInvalidCredentials(..), CampusMessage(..))
-- import Auth.LDAP (ADError(..), ADInvalidCredentials(..), CampusMessage(..))
import Yesod.Auth.Message(AuthMessage(..))
@ -175,6 +175,7 @@ showFAQ :: ( MonadAP m
, MonadThrow m
)
=> Route UniWorX -> FAQItem -> m Bool
showFAQ _ FAQLoginExpired = return True
showFAQ _ FAQNoCampusAccount = is _Nothing <$> maybeAuthId
showFAQ (AuthR _) FAQCampusCantLogin = return True
showFAQ _ FAQCampusCantLogin = is _Nothing <$> maybeAuthId
@ -183,38 +184,20 @@ showFAQ _ FAQForgottenPassword = is _Nothing <$> maybeAuthId
showFAQ _ FAQNotLecturerHowToCreateCourses
= and2M (is _Just <$> maybeAuthId)
(not <$> hasWriteAccessTo CourseNewR)
showFAQ (CourseR tid ssh csh _) FAQCourseCorrectorsTutors
= and2M (is _Just <$> maybeAuthId)
(or2M (hasWriteAccessTo $ CourseR tid ssh csh SheetNewR)
(hasWriteAccessTo $ CourseR tid ssh csh CTutorialNewR)
)
showFAQ (CExamR tid ssh csh examn _) FAQExamPoints
= and2M (hasWriteAccessTo $ CExamR tid ssh csh examn EEditR)
noExamParts
where
noExamParts = liftHandler . runDB . E.selectNotExists . E.from $ \(examPart `E.InnerJoin` exam `E.InnerJoin` course) -> do
E.on $ course E.^. CourseId E.==. exam E.^. ExamCourse
E.on $ exam E.^. ExamId E.==. examPart E.^. ExamPartExam
E.where_ $ course E.^. CourseTerm E.==. E.val tid
E.&&. course E.^. CourseSchool E.==. E.val ssh
E.&&. course E.^. CourseShorthand E.==. E.val csh
E.&&. exam E.^. ExamName E.==. E.val examn
showFAQ _ FAQInvalidCredentialsAdAccountDisabled = maybeT (return False) $ do
guardM $ is _Nothing <$> maybeAuthId
sessionError <- MaybeT $ lookupSessionJson SessionError
guard $ sessionError == PermissionDenied (toPathPiece $ ADInvalidCredentials ADAccountDisabled)
return True
showFAQ _ _ = return False
-- showFAQ (CourseR tid ssh csh _) FAQCourseCorrectorsTutors
-- = and2M (is _Just <$> maybeAuthId)
-- (or2M (hasWriteAccessTo $ CourseR tid ssh csh SheetNewR)
-- (hasWriteAccessTo $ CourseR tid ssh csh CTutorialNewR)
-- )
-- showFAQ _ _ = return False
prioFAQ :: Monad m
=> Route UniWorX -> FAQItem -> m Rational
prioFAQ _ FAQLoginExpired = return 2
prioFAQ _ FAQNoCampusAccount = return 1
prioFAQ _ FAQCampusCantLogin = return 1
prioFAQ _ FAQForgottenPassword = return 1
prioFAQ _ FAQNotLecturerHowToCreateCourses = return 1
prioFAQ _ FAQCourseCorrectorsTutors = return 1
prioFAQ _ FAQExamPoints = return 2
prioFAQ _ FAQInvalidCredentialsAdAccountDisabled = return 3
getInfoLecturerR :: Handler Html

View File

@ -595,7 +595,10 @@ postQualificationR sid qsh = do
) $ \( view $ resultQualUser . _entityVal . _qualificationUserScheduleRenewal -> b) -> ifIconCell (not b) IconNoNotification
, sortable (Just "lms-status-plus")(i18nCell MsgTableLmsStatus & cellTooltipWgt Nothing (lmsStatusInfoCell isAdmin auditMonths))
$ \(preview $ resultLmsUser . _entityVal -> lu) -> foldMap (lmsStatusCell isAdmin linkLmsUser) lu
, sortable (Just "last-notified") (i18nCell MsgTableQualificationLastNotified) $ \( view $ resultQualUser . _entityVal . _qualificationUserLastNotified -> d) -> dateTimeCell d
-- QualificationUserLastNotified is about notification on actual validity changes. If a user's licence is about to expire and renewed before expiry via e-learning, this value does not change.
-- NOTE: If this column is reinstatiated, header and tooltip were already updated to avoid any confusion!
-- , sortable (Just "last-notified") (i18nCell MsgTableQualificationLastNotified & cellTooltip MsgTableQualificationLastNotifiedTooltip)
-- $ \( view $ resultQualUser . _entityVal . _qualificationUserLastNotified -> d) -> dateTimeCell d
]
psValidator = def & defaultSorting [SortDescBy "last-refresh"]
tbl <- mkQualificationTable isAdmin qent acts colChoices psValidator

View File

@ -8,19 +8,27 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Können sie sich mit <i>exakt identischen</i> (idealerweise #
copy&paste) Daten #
im <a href="https://www.portal.uni-muenchen.de">Campus-Portal</a> #
im <a href="https://myapps.microsoft.com/">myapps.microsoft.com</a> #
anmelden?
<br>
Falls sie die Fehlermeldung „Passwort abgelaufen“ oder "password-expired" erhalten, #
dann befolgen Sie bitte #
<a href=^{faqLink FAQLoginExpired}>
diese Anleitung zum erneuern Ihres Passworts.
<br>
Falls nicht („_{InvalidLogin}“), ist davon auszugehen, dass Sie #
Ihre Anmeldedaten falsch eingeben oder #
<a href=^{faqLink FAQNoCampusAccount}>keine LMU-Benutzerkennung #
(ehem. Campus-Kennung) besitzen</a>.
<a href=^{faqLink FAQNoCampusAccount}>keine gültige Fraport AG #
Benutzerkennung besitzen</a>. #
Rufen Sie in diesem Fall den allgemeinen Fraport IT-Helpdesk #
an unter <a href="tel:+49-69-690127">+49-69-690127</a>
<p>
Beachten Sie dabei auch, dass Uni2work Leerzeichen sowohl im #
Passwort als auch bei der Kennung berücksichtigt.
Beachten Sie, dass Leerzeichen sowohl im #
Passwort als auch bei der Kennung berücksichtigt werden.
<br>
@ -33,34 +41,27 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
aktiviertem JavaScript), dass Sie Ihr Passwort korrekt eingeben.
<p>
Uni2work bietet zwei Login-Formulare.
Uni2work bietet mehrere Login-Formulare.
<br>
Für die Anmeldung mit der LMU-Benutzerkennung (ehem. Campus-Kennung) #
Für die Anmeldung mit Ihren Fraport AG Konto #
müssen Sie das Formular „_{MsgLDAPLoginTitle}“ verwenden.
<br>
Geben Sie unter „_{MsgCampusIdent}“ ihre vollständige #
LMU-Benutzerkennung an. #
Diese ist identisch mit ihrer <code>@campus.lmu.de</code> E-Mail #
Adresse.
<p>
Falls Sie seit Ihrem letzten Login in Uni2work ihr Passwort geändert #
Falls Sie Ihr Passwort kürzlich geändert #
haben, kann es sein, dass die Änderung des Passworts (noch) nicht #
korrekt propagiert wurde.
korrekt propagiert wurde. Warten Sie einfach ein paar Minuten oder #
versuchen Sie, Ihr altes Passwort zu verwenden.
<br>
In diesem Fall können Sie versuchen Ihr Passwort erneut zu ändern.
<p>
Sobald Sie die obigen Hinweise befolgt haben, wenden Sie sich bitte #
(erneut) über das <a href=@{HelpR}>Hilfe-Formular</a>, oben rechts #
auf jeder Seite, an die Uni2work-Administration.
auf jeder Seite, an die FRADrive-Administration.
<br>

View File

@ -7,18 +7,29 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Can you log in to #
the <a href="https://www.portal.uni-muenchen.de">Campus-Portal</a> #
the <a href="https://myapps.microsoft.com/">myapps.microsoft.com</a> #
using the <i>exact same</i> (ideally copied & pasted) login data?
<br>
If you received the error message „Passwort abgelaufen“ or "password-expired" #
then please follow #
<a href=^{faqLink FAQLoginExpired}>
these instructions for password renewal.
<br>
If you cannot (“_{InvalidLogin}”), this means that you are #
entering your login data wrong or that you #
<a href=^{faqLink FAQNoCampusAccount}>do not have a LMU user ID #
(formerly Campus-ID)</a>.
<a href=^{faqLink FAQNoCampusAccount}>
do not have a valid Fraport AG credentials.
<br>
In this case please call the general Fraport IT-Servicedesk
at <a href="tel:+49-69-690127">+49-69-690127</a>
<p>
Please consider that for Uni2work both your user ID and password are #
Please consider that for FRADrive both your user ID and password are #
sensitive to whitespace characters.
<br>
@ -37,31 +48,22 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
password manager instead of typing it manually.
<p>
Uni2work offers two login forms.
Furthermore, FRADrive offers several login forms.
<br>
To log in using your LMU user ID (formerly Campus-ID) you need to #
To log in using your Fraport AG credentials you need to #
use the form titled “_{MsgLDAPLoginTitle}”.
<br>
Under “_{MsgCampusIdent}” please enter your entire LMU user ID, #
which is identical to your <code>@campus.lmu.de</code> email #
address.
<p>
If you have changed your password since last you logged into #
Uni2work, it may be the case that your password change was not #
propagated properly.
<br>
If so, please try changing your password again.
FRADrive, it may be the case that your password change was not #
propagated properly. Please wait a few minutes and try again,
or try changing your password again.
<p>
Once you have followed the suggestions above, please contact a #
Uni2work-administrator using the <a href=@{HelpR}>Support form</a> #
FRADrive-administrator using the <a href=@{HelpR}>Support form</a> #
(at the top right of every page).
<br>
@ -73,4 +75,4 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
Never disclose your password to third parties! #
Not even to an Uni2work-administrator or the IT-Servicedesk!
Not even to a FRADrive-administrator or the IT-Servicedesk!

View File

@ -1,10 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Ausbilder:innen und Korrektor:innen werden beim Anlegen oder Editieren des #
jeweiligen Kurses bzw. Übungsblattes angegeben.

View File

@ -1,9 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Instructors and correctors are assigned when creating or editing the #
respective course or exercise sheet.

View File

@ -1,14 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Klausurpunkte werden in Uni2work pro Teilaufgabe verwaltet.
<p>
Um Klausurleistungen als Punkte anzugeben (und optional automatisch #
eine Note daraus zu berechnen), müssen Sie mindestens eine #
Teilprüfung/Aufgabe anlegen.

View File

@ -1,14 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Exam points are managed in Uni2work on a per-exam-part basis.
<p>
To store exam achievements in the form of points (and optionally #
automatically compute grades), you need to create at least one #
exam part/question.

View File

@ -1,27 +1,16 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>
$# SPDX-FileCopyrightText: 2022-24 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>,Steffen Jost <s.jost@fraport.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Wenn Sie sich gewöhnlicherweise mit Ihrer LMU-Benutzerkennug #
(ehem. Campus-Kennung) anmelden, wenden Sie sich bitte an #
den <a href="https://www.it-servicedesk.uni-muenchen.de/faq/index.html#campuskennung-passwort-vergessen">IT-Servicedesk</a> #
um Ihr Passwort zurücksetzen zu lassen.
Wenn Sie Ihr Passwort vergessen haben, wenden Sie sich bitte an #
den allgemeinen Fraport IT-Helpdesk unter
<a href="tel:+49-69-690127">
+49-69-690127
<p>
Wenn Sie sich mit einer Uni2work-internen Kennung anmelden wenden #
Sie sich dafür bitte über das <a href=@{HelpR}>Hilfe-Formular</a> #
(oben rechts auf jeder Seite) an die Uni2work-Administration.
<br>
Tragen sie dabei unter „Antworten an“ die Adresse ein, an die #
Uni2work gewöhnlicherweise Mitteilungen verschickt.
<br>
Bitte geben Sie zusätzlich mind. eine nicht-öffentliche #
personenbezogene Information an, um den Administrator:innen zu helfen #
die Anfrage zu authorisieren. #
Geeignet ist z.B. die Matrikelnummer oder der ungefähre Zeitpunkt #
des letzten Logins.
Die FRADrive Administratoren können bei Login Problemen leider #
nicht helfen, da diese keinen Zugriff auf Ihren Fraport AG Account haben.

View File

@ -1,26 +1,17 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$# SPDX-FileCopyrightText: 2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <s.jost@fraport.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
If you usually log in using your LMU user ID (formerly Campus-ID) #
please contact #
the <a href="https://www.it-servicedesk.uni-muenchen.de/faq/index.html#campuskennung-passwort-vergessen">IT #
servicedesk (german)</a> to reset your password.
If you have forgotten your password #
please contact the general Fraport IT-servicedesk at #
<a href="tel:+49-69-690127">
+49-69-690127
to reset your password.
<p>
If you log in using a Uni2work-internal account please use #
the <a href=@{HelpR}>Support form</a> (at the top right of every #
page) to contact a Uni2work-administrator.
<br>
Specify the email to which Uni2work usually sends notifications #
under “Send answers to”.
<br>
Please also include at least one non-public piece of information to #
help authorise your request. #
We suggest your Matriculation number or the approximate time of your #
last successful login.
FRADrive administrators have no access to your Frapot AG account #
and thus cannot help you with this problem.

View File

@ -1,22 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Gewöhnlicherweise wird Ihr Benutzereintrag gesperrt, wenn sie #
exmatrikuliert werden bzw. Ihr Beschäftigungsverhältnis endet. #
Es kommt gelegentlich vor, dass Ihr Benutzereintrag nicht korrekt #
entsperrt wird, wenn Sie wieder immatrikuliert bzw. eingestellt #
werden.
<p>
Falls Sie aktuell immatrikuliert bzw. eingestellt sind, oder Sie #
einen anderen triftigen Grund vorweisen können, warum Sie Zugang zu #
Uni2work brauchen, wenden Sie sich bitte über #
das <a href=@{HelpR}>Hilfe-Formular</a>, oben rechts auf jeder #
Seite, an die Uni2work-Administration und schildern Sie Ihre #
Situation.

View File

@ -1,19 +0,0 @@
$newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Usually your account is disabled once you are no longer matriculated #
(i.e. registered as a student) or employed. #
Occasionally accounts are not correctly re-enabled once you are #
matriculated or employed, again.
<p>
If you are currently matriculated, employed, or have another good #
reason why you should have access to Uni2work, please contact a #
Uni2work-Administrator using the <a href=@{HelpR}>Support form</a> #
(at the top right of every page) and describe your situation.

View File

@ -0,0 +1,47 @@
$newline never
$# SPDX-FileCopyrightText: 2024 Steffen Jost <s.jost@fraport.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Der Zugang zu FRADrive erfolgt über Ihren Fraport AG Login. #
Das Passwort für Ihren Fraport AG Login muss alle 90 Tage geändert werden. #
Tun Sie dies nicht, so können Sie sich nicht mehr einloggen. #
Dies besagen die Richtlininen der Fraport AG IT Abteilung.
<p>
Bevor oder auch nachdem Ihr Passwort abgelaufen ist, #
können Sie das Passwort ganze leicht selbst mit einer #
der folgenden Methoden ändern: #
<ol>
<li>
Über #
<a href="https://account.activedirectory.windowsazure.com/ChangePassword.aspx">
das Azure Portal
.
<li>
Über Ihre #
<a href="https://myaccount.microsoft.com/?ref=MeControl">
Microsoft Kontoseite
. Verwenden Sie dort die Funktion "Kennwort ändern".
<li>
Über Ihre Profil-Einstellungen "Konto-Anzeigen" auf #
<a href="https://myapps.microsoft.com/">
Ihre Microsoft My-Apps Seite
.
<p>
<b>
Hinweis: #
Wenden Sie sich bei Problemen mit dem Passwortwechsel #
bitte direkt an den allgemeinen Fraport IT-Helpdesk unter #
<a href="tel:+49-69-690127">
+49-69-690127
<br>
Die FRADrive Administratoren können bei diesem Login Problem leider #
nicht helfen, da diese keinen Zugriff auf Ihren Fraport AG Account haben.

View File

@ -0,0 +1,46 @@
$newline never
$# SPDX-FileCopyrightText: 2024 Steffen Jost <s.jost@fraport.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Using FRADrive required a Fraport AG account. #
The password for your Fraport AG account must be changed every 90 days. #
Following the general IT safety guidelines of Fraport AG, #
your login will be temporarily disabled otherwise.
<p>
Regardless of whether your password has already expired or not, #
you may easily change your password with any one of the following methods: #
<ol>
<li>
Via #
<a href="https://account.activedirectory.windowsazure.com/ChangePassword.aspx">
the azure portal
.
<li>
Using you #
<a href="https://myaccount.microsoft.com/?ref=MeControl">
Microsoft account page
, then using the function "change password" there.
<li>
By accessing your profile settings on #
<a href="https://myapps.microsoft.com/">
your Microsoft My-Apps page
.
<p>
<b>
Please note: #
If you have any problem changing your password #
please call the general Fraport IT-servicedesk at #
<a href="tel:+49-69-690127">
+49-69-690127
<br>
FRADrive administrators have no access to your Frapot AG account #
and thus cannot help you with this problem.

View File

@ -693,12 +693,25 @@ fillDb = do
, UserSupervisor gkleen gkleen True (Just fraGround) (Just "Staff")
, UserSupervisor tinaTester tinaTester False Nothing (Just "Staff")
]
++ take 444 [ UserSupervisor fhamann uid True Nothing (Just "Test") | Entity uid _ <- matUsers, uid /= jost]
++ take 123 [ UserSupervisor gkleen uid True (Just fraGround) (Just "Test") | Entity uid _ <- drop 369 matUsers ]
++ take 11 [ UserSupervisor jost uid False (Just fraportAg) (Just "Test") | Entity uid _ <- drop 501 matUsers ]
upsertManyWhere supvs [] [] []
-- upsertManyWhere supvs [] [] [] -- NOTE: multiple calls like this are ok
-- insertMany_ supvs -- NOTE: multiple calls like this throw an error!
++ take 444 [ UserSupervisor fhamann uid True Nothing (Just $ tshow SupervisorReasonCompanyDefault) | Entity uid _ <- matUsers, uid /= jost]
++ take 123 [ UserSupervisor gkleen uid True Nothing Nothing | Entity uid _ <- drop 369 matUsers ]
++ take 11 [ UserSupervisor jost uid False Nothing (Just $ tshow SupervisorReasonCompanyDefault) | Entity uid _ <- drop 501 matUsers ]
upsertManyWhere supvs [] [] []
-- insertMany_ supvs -- NOTE: multiple calls like this throw a runtime error!
-- upsertManyWhere supvs [] [] [] -- NOTE: multiple calls like this are ok
-- upsertManyWhere (supvs ++ take 5 (drop 12 [ UserSupervisor jost uid False | Entity uid _ <- drop 501 matUsers ])) -- no duplicates within first argument allowed! (runtime error: ON CONFLICT DO UPDATE command cannot affect row a second time)
-- [copyField UserSupervisorRerouteNotifications] [UserSupervisorRerouteNotifications =. True] [UserSupervisorSupervisor ==. jost, UserSupervisorUser <-. [uid | Entity uid _ <- take 3 $ drop 504 matUsers ]] -- does not work!
-- let changeSome usr@(UserSupervisor s u _)
-- | s == jost, u `elem` take 14 [ uid | Entity uid _ <- drop 501 matUsers ] = UserSupervisor s u True
-- | otherwise = usr
-- upsertManyWhere (changeSome <$> (supvs ++ take 5 (drop 12 [ UserSupervisor jost uid False | Entity uid _ <- drop 501 matUsers ]))) -- no duplicates within first argument allowed! (runtime error: ON CONFLICT DO UPDATE command cannot affect row a second time)
-- [copyField UserSupervisorRerouteNotifications] [] [UserSupervisorSupervisor ==. jost, UserSupervisorUser <-. [uid | Entity uid _ <- take 3 $ drop 504 matUsers ]] -- probably does the same as the above
-- OBSERVATIONS:
-- - use the 2. argument with `copyField` to overwrite an existing field with the new record value provided in the 1. argument in case of an update
-- - use the 3. argument to update a field indepently from the provided records or for computations involving previous values, eg. +=.
-- - use the 4. argument to filter both the application of the 2. and 3. argument
ifi <- insert' $ School "Institut für Informatik" "IfI" (Just $ 14 * nominalDay) (Just $ 10 * nominalDay) True (ExamModeDNF predDNFFalse) (ExamCloseOnFinished True) SchoolAuthorshipStatementModeOptional (Just ifiAuthorshipStatement) True SchoolAuthorshipStatementModeRequired (Just ifiAuthorshipStatement) False
mi <- insert' $ School "Institut für Mathematik" "MI" Nothing Nothing False (ExamModeDNF predDNFFalse) (ExamCloseOnFinished False) SchoolAuthorshipStatementModeNone Nothing True SchoolAuthorshipStatementModeOptional Nothing True