Is there a setting to force user stories to be linked to a parent? - azure-devops

There is a setting for forcing story points to be entered when creating a work item (e.g. user story) in the layout processes field options, but is there one for mandating linking of work item/story to a parent?

There isn't a straight forward way to do that.
A good option is to create a custom field in User Story work item in your inherited process.
And set the work item rule to make required the value of this field when creating User Stroy.
Check the UI output by using the rule. This could be a reminder to link the parent work item.
Update 1:
You still need to manually add link as Related Work.
The required value for the custom field works as a reminder for the users when creating the User Story.
You could also define the custom field as Picklist(string). When a user creates a new User Story, he could add Related Work links and pick a value for the custom field in order to save this User Story.
Output:

Related

Security warning from extension_builder: action is publicly accessible

I created an extension with the extension builder.
On saving I get this message:
The object was updated. Please be aware that this action is publicly accessible unless you implement an access check. See https://docs.typo3.org/typo3cms/extensions/extension_builder/User/Index.html
How can I fix this issue? Yes I read the page but there are no useful hints.
Since the question is how you can "fix the issue": There is no issue, it is a warning, you can remove it and make your request secure. (As in the other answer.)
The "hint" on the page is actually very straightforward. The "issue", that a user is able to manipulate the url and make the server to execute a not wanted action.
Here is an example:
You have a list of users of your page and you can open thier public porfile for more information:
https://yourdomain.com/list/?tx_ext_plugin['action']=show&tx_ext_plugin['userId']=41.
So if I want to make some trouble, I change the action "show" to "delete" and may I am able to delete the poor user "41" from the db. That is bad.
https://yourdomain.com/list/?tx_ext_plugin['action']=delete&tx_ext_plugin['userId']=41.
So since it is you business logic typo3 offers no out of the box solution for this. That is why this warning from extension builder says, that you need to make actions to prevent misuse.
Regarding how to implemnt a better security here are some thoughts about the Access Control and some ideas what to implement in your actions:
1) FE
You can separate your actions into different plugins. So if you have a public list action it can not be modified to the plugin that responsible for the delete action. How is it possible? TYPO3 will look the page record in your database. And will render it, and if there is a plugin on the page with the signature "tx_ext_plugin" then it will get the sent parameters. In this case you have the possibility to add the different plugins to different pages so changing the signature of it for an attacker won't help, because:
If the delete action is not registered by the plugin, TYPO3 will
throw an exception.
If you are trying to change the whole signature the page won't be able to identify the plugin.
You can add the edit / delete plugin to pages where a user has to be logged in. You can even manage multiple usergroups. Like normal user can only edit its profile, but a premium user can make further changes. You can use in fluid a view helper IfHasRole that can show parts of your template for defined user groups. (There is an ifAuthenticated ViewHelper too)
You can take the extension "femanager" as an example. There is a controller "EditController", that covers actions like "update" and "delete". For example before making the update action there is a check if the logged in user has the same user id as the record which going to be changed. If you have a complex example you can make a check on the user group also.
2) BE
It is actually almost the same as frontend.
BUT instead of plugins / user groups assigned in page settings. You can use different mountpoints, so BE users can not see folders where they are not allow to edit / delete.
You have those two ViewHelper for the BE too. There names are: f:be:security.ifAuthenticated and f:be:security:ifHasRole. However ifAuthenticated is also for FE, in a BE context it does not make sense.
You have also the possibility to identify the id and userGroups of the BE user and you can make your own checks before you let an action run.
You have also the possibility to turn on / off a module for a certain BE group.
+1: It is nothing to do with any action but just to list it too. There is also the possibility to allow / disallow field for BE Users by editing a record through the List mode in the BE.
Extension builder creates dummy actions to update and create records. Those example actions do not contain any security checks, whether the caller actually is allowed to do so.
So it is your job to add adequate access control to those methods. E.g. make sure the current user (be it Frontend or Backend) is actually allowed to update the model in question.

Section display issue in I.fopath form

I have an infopath form which users use to fill details and approver approves. The approver section in form is displayed to only those whose ID is present in hidden field. This was working fine before but now even approvers could not see approver section. Recently I added an user in hidden field after which it worked fine for sometime. Now all approvers could not see the approver section itself.
Things to check:
if you are using multiple views in the form, make sure you are updating them as needed and not only updating one view and forgetting the others.
if you remove the lase user you added tonthe hidden input, does the issue go away? How are you inserting users in hidden input? Seperating them by some character?
try to display the id of the current user in the form and display the hidden input and make sure the id's really match or there is any difference

Split Sonata User Bundle registration form into stages

I'm currently working on a user registration form for a site I'm working on. The site requires a lot of information about users up front, and I'd like to break it down into stages.
The first stage requires the user to put in an identifier in the form of an order number. I would then check the order number exists in the system before making them continue to fill in the rest of the fields. I'm not sure how to go about doing this.
What I've managed so far though is to override the underlying User, RegistrationController and RegistrationFormType and render out a customised view with the relevant form fields.
An overview of the process I'd like would be:
FORM: ask for order number
process form and check order number exists (if not go back to 1)
FORM: ask for user information
process user information and store
complete
Simplest way of doing it will be to override registration template, and hide all fields except those you wanna show in first.
And than add some js validation rules, - to show up parts of form based on values prefilled by user. In that case you do not need to rework Sonata registration form, but for user experience it will be the same.

How to correctly configure an Open Graph story with map attachment?

In a test app I've set up an object (race) and an action (run). I'm now trying to set up a story that combines both of these.
Ideally the race object references a place on my app. But I've been experimenting with many configurations trying to get this to work — none successfully.
In the 'edit attachment' popup is a field 'highlighted points'. I believe this should provide a dropdown list of selectable options? It currently is not, and if I type free text into this field, it is not saved.
What am I doing wrong?
The race page on my app includes the following:
And the course pages include
>>>' />
>>' %> />
On Facebook, course is configured as a Place, race has the course property assigned. But I am unable to select race.course:location in the map popup.
I have also tried various configurations, including defining the lat/lon explicitly on the race page and defining appropriate properties on FB.
I am still unable to select the highlighted points value.
Am I missing something?
Have a look at the answer at
Open Graph Map layout
This should be able to guide you.
Also
https://developers.facebook.com/docs/reference/opengraph/object-type/place/#properties

Tuleap - Assign back to Artifact Submitter

in the field usage section of tuleap, i have selected bind to users option, in that i selected list of groups available and also artifact_submitter option.
So,when a submitter(user1) fills the task and assign it to the user2, the assigned person couldn't assign back exactly to the particular person(user1), who submitted the artifact.When user2 selects a assigned to option he can see the artifact_submitter along with the usergroups involved in the section.
In our office we have some 150 users who will submit a artifact and assign it to the project lead user, in turn the project lead couldn't assign back to the exact user who submitted it.
When he clicks the assigned to option, he could able to see all the 150 users available for that user group.
Is there a option where one can assign back to the exact user whoever submitted the artifact.(like we have correspondence button in Codesk tool)?
Sadly no, this is not possible at the moment. What you can do is use an Openlist field instead, which does not solve your issue but make it easier to select one person in a list of 150 name.