Bootcamp:Chapter 11
No edit summary
No edit summary
 
(29 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This is '''Chapter 11'''. Are you looking for the beginning? [[The 1000 steps program to MDriven Chapter 1|Find it here: Chapter 1]], or [[The 1000 steps program to MDriven Chapter 10|link to Chapter 10 (the previous chapter)]]
<message>Write the content here to display this box</message>
This is '''Chapter 11'''. Are you looking for the beginning? [[Training:Bootcamp:Chapter 1|Find it here: Chapter 1]], or [[Training:Bootcamp:Chapter 10|link to Chapter 10 (the previous chapter)]]


Here's the Chapter 11 Video: https://www.youtube.com/watch?v=j7NfjVZgZ38
=== '''Video 11: Authentication'''  ===
<html>


=== '''Video 11: MDrivenEducationVideo'''  ===
<p class="video-warn">
{| class="wikitable"
  To make your experience smooth, we set the main tags mentioned in the video to the right bar menu of this mini-player. Choose an interesting subtitle on the list and immediately get to the exact theme navigation item place in the video. Now you can pick any topic to be instructed on without watching the whole video.
|'''Title'''
</p>
|'''Time(Segment Start)'''
|-
|Introduction
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC Introduction]
|-
|Singleton Pattern
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=220 Singleton Pattern at 3:40]
|-
|CIS Supercross
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=705 CIS Supercross at 11:45]
|-
|CIS Superclose
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=912 CIS Superclose at 15:12]
|-
|External Login
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=1432 External Login at 23:52]
|-
|Access Groups
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=1765 Access Groups at 29:25]
|-
|Access Group Editor
|[https://youtu.be/j7NfjVZgZ38?si=VIGYZy8ppWe8GYgC&t=1920 Access Group Editor at 32:00]
|-
|}


== Chapter 11: User Login, Access Groups, Default Superclass, Singleton Pattern, and Merge Model ==
<div class="video">
332. Go to the Wiki [[Model Examples]] and download the SysUserAuthentication model.  
  <div class="video__wrapper">
    <iframe src="https://www.youtube.com/embed/j7NfjVZgZ38?si=5Uem-BlrgvUk5Rnp" title="YouTube video player" frameborder="0" allowfullscreen></iframe>
  </div>
  <div class="video__navigation">
<span data-video="j7NfjVZgZ38" data-start="00" tabindex="0"> <strong> Steps 332 - 364 </strong> </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="00" tabindex="0"> Introduction </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="220" tabindex="0"> Singleton Pattern </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="705" tabindex="0"> SysSuperClass </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="1432" tabindex="0"> External Login </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="1765" tabindex="0"> Access Groups </span>
    <span class="navigation-item" data-video="j7NfjVZgZ38" data-start="1920" tabindex="0"> Access Group Editor </span>
  </div>
</div>
 
</html>
 
== Chapter 11: User Login, Access Groups, Default SuperClass, Singleton Pattern, and Merge Model ==
332. Go to the Wiki, click on [[Documentation:Model Examples|Model Examples]] in the top menu, and download the '''SysUserAuthentication''' model.  


333. Open and Merge in the downloaded file.
333. Open and Merge in the downloaded file.


334. Verify that the SysSingleton has the property ''IsSingleton'' set in the objects inspector.
334. Verify that '''SysSingleton''' has the property ''IsSingleton'' set in the objects inspector.
 
335. Make sure you understand the Singleton pattern.
 
* Check the Wiki and also google the concept: [[wikipedia:Singleton_pattern|Singleton_pattern]]


335. Make sure you understand the Singleton pattern.
* Check the Wiki and also google the concept: https://en.wikipedia.org/wiki/Singleton_pattern
336. Start the prototyper with XML persistence.
336. Start the prototyper with XML persistence.


337. Test the OCLSingleton operator in the prototyper - ensure you get an object.
337. Test the '''OCLSingleton''' operator in the prototype with this expression:<code><span class="col-black">SysSingleton.oclSingleton</span></code> - ensure you get an object.


338. Select the SysSingleton ''CurrentUser'' association in the class diagram. Check that Persistent is set to ''false'' and thus, the association is transient.
338. Select the ''SysSingleton'' ''CurrentUser'' association in the class diagram. Check that Persistent is set to '''false''''','' and thus, the association is transient.


339. Select the SysSuperClass in the diagram. Check the OnCreate and OnUpdate on the Wiki.
339. Select the '''SysSuperClass''' in the diagram. Check [[Documentation:OCLOperators OnCreate|OnCreate]]  and [[Documentation:OCLOperators OnUpdate|OnUpdate]] on the Wiki.


340. Make sure you understand what [[OCLOperators OnCreate|OnCreate]] and [[OCLOperators OnUpdate|OnUpdate]] actually do. Use the debugger to verify your theory on how it works.
340. Make sure you understand what '''OnCreate''' and '''OnUpdate''' do. Follow the video on how the debugger is used to verify the theory on how it works.


341. Ensure that the SysSuperClass is the default superclass for the AuthenticationPackage.
341. Ensure that '''SysSuperClass''' is the default superclass for the '''AuthenticationPackage'''.


342. Check the oclIsTypeOf and oclKindOf and superTypes operators in the debugger.  
342. Check the '''oclIsTypeOf''', '''oclIsKindOf''', and '''superTypes''' operators in the debugger.


343. Set the Default superclass of Package1 to the SysSuperClass.
1. Write <code><span class="col-black">'''SysSingleton.oclSingleton.oclIsTypeOf(SysSuperClass)'''</span></code>


344. Start the debugger or refresh the model. Make sure Person now has the ChangeTime attribute.
* Execute (F5).
* Verify you get ✅, signifying it is true
2. Write <code><span class="col-black">'''SysSingleton.oclSingleton.oclIsKindOf(SysSuperClass)SysSingleton'''</span></code>
* Execute (F5)
* Verify you get ✅, showing it’s a subclass of SysSuperClass
3. Write <code><span class="col-black">'''SysSingleton.superTypes'''</span></code>
* Verify you get “SysSuperClass”
 
343. Set the Default superclass of Package1 to '''SysSuperClass'''.
 
344. Start the debugger or refresh the model. Make sure '''Person''' now has the '''ChangeTime''' attribute.  


345. In the debugger, set the empty Guid property to a new Guid for all persons.
345. In the debugger, set the empty Guid property to a new Guid for all persons.


346. When you save the persons, ensure the ChangeTime is updated.
* Click on "Action" to change <code><span class="col-black">Person.allinstances</span></code> from an OCL to an Action expression
* Set this expression: <code><span class="col-black">'''Person.allinstances->collect(p|p.Guid:=Guid.NewGuid)'''</span></code>
* Execute(F5). You should see a new Guid assigned to the Guid.
* Save
 
346. When you save all persons, ensure the '''ChangeTime''' is updated.


347. Start Local Turnkey Prototyper.
347. Start the Local Turnkey Prototyper.


348. Try and login with any user.  
348. Try to login with any user.


349. Register a new user with email and password.
349. Register a new user with email and password.


350. Go to the debugger and check that you have a new SysUser object.
350. Go to the debugger and check that you have a new '''SysUser''' object.
 
* Input <code><span class="col-black">SysUser.allinstances</span></code> and verify that a new '''SysUser''' has been created.
 
351. Go to the ViewModel Editor, select the '''CarSeeker''' ViewModel and click on the box to set its AccessGroups to ''IsLoggedIn''. Save.


351. Go to CarSeeker ViewModel and set AccessGroup to IsLoggedIn. Save.
352. Try accessing '''CarSeeker'''. Ensure you cannot see '''CarSeeker''' when you are not logged in.


352. Ensure you cannot see CarSeeker when you are not logged in.
353. Ensure you can see '''CarSeeker''' only when you are logged in.


353. Ensure you can see CarSeeker when you are logged in.
354. Go to the AccessGroup-tool button found at the top menu, next to the Actions Editor button.


354. Go to the AccessGroup-tool button.  
355. Check the expressions that build up the ''IsLoggedIn'' access group and see that you understand them.


355. Check the expressions that build up the IsLoggedIn access group and see that you understand them.
356. Add a new access group: '''<span class="col-blue-navy">IsAdministrator</span>'''


356. Add a new access group: <code>IsAdministrator</code>
* Set both the Enable Expression and Viable Expression to: <code>'''<span class="col-black">SysSingleton.oclSingleton.CurrentUser.IsAdmin=true</span>'''</code>
* Save  


357. Refresh the AutoForms. Make sure you get Autoforms for SysUser.
357. Refresh the AutoForms. Make sure you get Autoforms for '''SysUser'''.


358. Go to AutoformsysUser and set access group ''IsAdministrator''.
358. Go to AutoformSysUser and set the access group to ''IsAdministrator''.


359. Do the same for AutoFormSysUserSeeker.
359. Check the result on your webapplication.


360. Ensure you don't get access.
360. Ensure you don't get access and get an error message ("<u>Access denied</u>").


361. Create a new ViewModel name: <code>AccessDenied</code>. Make it explain that the user does not have access.
361. Create a new ViewModel name '''AccessDenied''' to explain that the user does not have access.  Double-click to add the row and input '''<span class="col-blue-dark">“</span>''' in the Expression box. Save.


362. Use the debugger and set the user as ''IsAdmin''. Save.
362. Set the access group for '''AutoFormSysUserSeeker''' to ''IsAdministrator''.


363. Ensure you can get into AutoFormSysUserSeeker since you are now an administrator.
* Go to the debugger and Re-Read the model.
* Write the expression: <code><span class="col-black">'''SysUser.allinstances'''</span></code>. Save
* Open the Seeker and tick the ''IsAdmin'' box. Save


364. Create a new user <code>b@b.se</code> (or something else) and log in as that. Confirm that this user does not reach the AutoFormSysUserSeeker, but instead, ends up at the AccessDenied view.
363. Ensure you can get into '''AutoFormSysUserSeeker''' since you are now an administrator.


'''Next Chapter:'''  
364. Create a new user <code><span class="col-black">'''b@b.se'''</span></code> (or something else) and log in as that. Confirm that this user does not reach the '''AutoFormSysUserSeeker''' but, ends up at the ''AccessDenied'' view.


[[The 1000 steps program to MDriven Chapter 12|The_1000_steps_program_to_MDriven_Chapter_12]]
=== '''Next Chapter''' ===
[[Category:1000 Steps Program]]
[[Training:Bootcamp:Chapter 12|Bootcamp:Chapter 12]]
[[Category:Bootcamp]]

Latest revision as of 05:47, 16 September 2024

This is Chapter 11. Are you looking for the beginning? Find it here: Chapter 1, or link to Chapter 10 (the previous chapter)

Video 11: Authentication

To make your experience smooth, we set the main tags mentioned in the video to the right bar menu of this mini-player. Choose an interesting subtitle on the list and immediately get to the exact theme navigation item place in the video. Now you can pick any topic to be instructed on without watching the whole video.

Steps 332 - 364 Introduction Singleton Pattern SysSuperClass External Login Access Groups Access Group Editor

Chapter 11: User Login, Access Groups, Default SuperClass, Singleton Pattern, and Merge Model

332. Go to the Wiki, click on Model Examples in the top menu, and download the SysUserAuthentication model.

333. Open and Merge in the downloaded file.

334. Verify that SysSingleton has the property IsSingleton set in the objects inspector.

335. Make sure you understand the Singleton pattern.

336. Start the prototyper with XML persistence.

337. Test the OCLSingleton operator in the prototype with this expression:SysSingleton.oclSingleton - ensure you get an object.

338. Select the SysSingleton CurrentUser association in the class diagram. Check that Persistent is set to false, and thus, the association is transient.

339. Select the SysSuperClass in the diagram. Check OnCreate  and OnUpdate on the Wiki.

340. Make sure you understand what OnCreate and OnUpdate do. Follow the video on how the debugger is used to verify the theory on how it works.

341. Ensure that SysSuperClass is the default superclass for the AuthenticationPackage.

342. Check the oclIsTypeOf, oclIsKindOf, and superTypes operators in the debugger.

1. Write SysSingleton.oclSingleton.oclIsTypeOf(SysSuperClass)

  • Execute (F5).
  • Verify you get ✅, signifying it is true

2. Write SysSingleton.oclSingleton.oclIsKindOf(SysSuperClass)SysSingleton

  • Execute (F5)
  • Verify you get ✅, showing it’s a subclass of SysSuperClass

3. Write SysSingleton.superTypes

  • Verify you get “SysSuperClass”

343. Set the Default superclass of Package1 to SysSuperClass.

344. Start the debugger or refresh the model. Make sure Person now has the ChangeTime attribute.

345. In the debugger, set the empty Guid property to a new Guid for all persons.

  • Click on "Action" to change Person.allinstances from an OCL to an Action expression
  • Set this expression: Person.allinstances->collect(p|p.Guid:=Guid.NewGuid)
  • Execute(F5). You should see a new Guid assigned to the Guid.
  • Save

346. When you save all persons, ensure the ChangeTime is updated.

347. Start the Local Turnkey Prototyper.

348. Try to login with any user.

349. Register a new user with email and password.

350. Go to the debugger and check that you have a new SysUser object.

  • Input SysUser.allinstances and verify that a new SysUser has been created.

351. Go to the ViewModel Editor, select the CarSeeker ViewModel and click on the box to set its AccessGroups to IsLoggedIn. Save.

352. Try accessing CarSeeker. Ensure you cannot see CarSeeker when you are not logged in.

353. Ensure you can see CarSeeker only when you are logged in.

354. Go to the AccessGroup-tool button found at the top menu, next to the Actions Editor button.

355. Check the expressions that build up the IsLoggedIn access group and see that you understand them.

356. Add a new access group: IsAdministrator

  • Set both the Enable Expression and Viable Expression to: SysSingleton.oclSingleton.CurrentUser.IsAdmin=true
  • Save  

357. Refresh the AutoForms. Make sure you get Autoforms for SysUser.

358. Go to AutoformSysUser and set the access group to IsAdministrator.

359. Check the result on your webapplication.

360. Ensure you don't get access and get an error message ("Access denied").

361. Create a new ViewModel name AccessDenied to explain that the user does not have access.  Double-click to add the row and input in the Expression box. Save.

362. Set the access group for AutoFormSysUserSeeker to IsAdministrator.

  • Go to the debugger and Re-Read the model.
  • Write the expression: SysUser.allinstances. Save
  • Open the Seeker and tick the IsAdmin box. Save

363. Ensure you can get into AutoFormSysUserSeeker since you are now an administrator.

364. Create a new user b@b.se (or something else) and log in as that. Confirm that this user does not reach the AutoFormSysUserSeeker but, ends up at the AccessDenied view.

Next Chapter

Bootcamp:Chapter 12

This page was edited 3 days ago on 09/16/2024. What links here