Giter VIP home page Giter VIP logo

scotoobo's Introduction

ScoTooBo

CircleCI Code Climate Test Coverage Issue Count

This is a toolbox for scouts to organize their work.

Features

It works with a ldap and a mysql databse in the backgroung. At the moment it provides following features:

  • User management (show, add, del, modify)
  • Event management
  • Provide feedback
  • Group management (show)

Setup

To setup a working scotoobo version you can use the docker images. Download the docker-compose.yml and run docker-compose up in the same directory.

You can edit the configuration by setting the environment variables in the docker-compose.yml file. If you don't scotoobo will fallback to test related default values.

After you started the app for the first time go into the container by executing: sudo docker exec -it pbnldocker_php_1 bash. Replace pbnldocker_php_1 with the name of the container. Then go into the app directory and execute php bin/console doctrine:schema:update --force to create/update the sql database.

Noe you have to clear, warm up the cache and create the assets. Execute composer run-script post-install-cmd --no-interaction --no-dev in the same directory to do this for an productive environment.

The system requires some groups in the ldap: buvo, elder, nordlichter, stavo, wiki, admin The stamm of an user is detected by the ou (of the ldap) he was placed in. So make sure that this folders are spelt correctly.

Thats it. Now you have a working scotoobo installation.

We used some nice libs for our work:

scotoobo's People

Contributors

albertvaka avatar bone4 avatar dependabot[bot] avatar nkpmedia avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

scotoobo's Issues

README.md

Paul writes all external included libraries in the file README.md

Userlist

As a user of the role "elder" I want to see a list of all users so that I can start all my user interactions here in the list.

Logging

We don't log transactions yet.
Let's discus where critical areas are (e.g. groupmanagement) and if we want to protocolate changes with timestamp there.

Mailinglists

As a creater of a group I want to be able to assign/create a mailinglist to/for a group.
I also want to be able to do that while I create the group.
I want that every user of the group with his mail is in the list.
But I also want to be able to add external mails.

Add group

As a user of the group "elder" I want to create a new group.
I want to add people to this group.

Template-Startpage

As an logged in user I want so see a basic template with a navbar.
I want that it is resposiv.
I want that it is simple.
Maybe Bootstrap?

Group difference

As a the system I need to differentiate between two group types. A Stamm and a group.

Maybe use an abstract class group.

Feedback pages are not going on

If a user is logged in and the navbar with the codeline

<span class="navbar-toggler-icon"></span>

is included, the user can't go to the secound feedback page.

GET http://html2canvas.appspot.com/?url=data%3Aimage%2Fsvg%2Bxml%3Bcharset%3Dut&callback=html2canvas_0 net::ERR_ABORTED
proxyGetImage @ html2canvas.js:2285
loadImage @ html2canvas.js:2462
getImages @ html2canvas.js:2353
getImages @ html2canvas.js:2309
getImages @ html2canvas.js:2309
getImages @ html2canvas.js:2309
getImages @ html2canvas.js:2309
_html2canvas.Preload @ html2canvas.js:2525
(anonymous) @ html2canvas.js:2772
setTimeout (async)
html2canvas @ html2canvas.js:2771
runH2c @ feedback.js:762
(anonymous) @ feedback.js:789

Login

As any user I want to login into the system with the creditals from the ldap database

Add user default groups

As a user who adds a user, I want to be able to choose if a user has access to the wiki or not.

For that I want to be able to check a box.
Then the user should be in the group wiki and nordlicht.

Add/Show event

As a logged in user with the group "ROLE_elder" I want to be able to see all and add an event.

I want to set:

  • name
  • description / invitation text
  • price
  • date (range or single date)
  • place

Feedback

The user should have the possibility to send feedback (remarks, errors, bugs, ...) to the developers over a feedback-button on each page.

Trans/Endtrans general tags

Put every general trans tags into the general group (general.asdf).

For example:

  • name
  • price
  • gid
  • id
  • description

Add user

As a user of the role "groupleader" I want to add a new user to the system.

User edit

As a normal user I want to be able to edit my own user data on the detail user page.

As a user of the role "stavo" I want to edit all users who are in the group of my stamm.
As a user of the role "groupleader" I want to edit all users who are in my scout group.
As a user of the role "buvo" "admin" I want to edit all users.

Login page

The login page will be shown under http://127.0.0.1:8000/login althought you are logged in.
For the case the user is already logged in the login page should redirect to /dashboard .

Group list

As a user I want so see a list of all groups I am a member of.
As a user of the role "buvo", "admin" I want to see a list of all groups.

Material objects

As a logged in user with the role "ROLE_elder" I want to be able to add a material object.
I want to be able to set:

  • name
  • a description
  • the offers

Every material object must have min. 3 offers.

A offer consists of:

  • name
  • URL to the offer
  • price
  • shop name

I want to be able to set the offers while adding the material object.
The material object should be reusable in different material requests.

I want that only I and a user with the role "ROLE_REMOVE_ALL_MATERIAL_OBJECTS"
is able to remove my object. (symfony ACL)
Also only users with the group "ROLE-elder" should be able to see the material object.

login redirect

As a logged in user I want to get redirected to the dashboard

Better mocking of services in tests because of deprecated code

We need a better way to mock services in the tests.
The actual way is marked as:

Setting the "reCaptcha" pre-defined service is deprecated since Symfony 3.3 and won't be supported anymore in Symfony 4.0: 2x
1x in FeedbackControllerTest::testCreateFeedbackDatabaseEntry from Tests\AppBundle\Controller
1x in FeedbackControllerTest::testCreateFeedbackDatabaseEntryWithLoggedInUser from Tests\AppBundle\Controller

For the moment I marked the tests with Legacy to avoid problems while testing on circleci.

Del User

As a stavo user I want to be able to delete any user of my stamm.
As a buvo user I want to be able to delete every user.

Intro JS

As a user, I want to get help by clicking on a (?) so that a short intro starts and shows me what I can do on the actual page.

See: https://introjs.com/

Add ldap test database

We need a ldap test database as ldif file for testing

It should not include any real user information

Forbid negativ price values at eventAdd

As a user, I want that the form denies negativ price values so that there are no invalid prices in the database.

Assets in the entity class
Mysql restrictions

Add user features

As a user who adds a new user I want to have a client side auto generated password so that I don't have to create a secure password for every user. It should be secure but easy to memories.

LDAP abstraction

As a developer I want to have a good and clean abstraction level of the LDAP database.

We need an abstraction of the users, the groups, the mailinglists.

Maybe we should add a second abstraction level:
LDAP Database
LDAPObject (LDAP User <- PHP class)
Object (User <- PHP class, can have a LDAPObect and an MySqlObject)
ObjectService (UserService <- Symfony service, get set del users)

Symfony has a ldap bundle with a ldap service and nice functions.

Detail groups

As a logged in user and a member of a group I want to see every user in this group.

Invitation link

As a logged in user and the owner of a event I want to be able to create a invitation link.

A person with the link should be able to join an event.
He should specify:

  • his full name
  • his address
  • his stamm (there should be a list)
  • his group name

There should be a text like "ich melde mich kostenpflichtig zu der Veranstalltung an" that you have to except.

A user is only allowed to join one time with the same name, stamm and group.

There must be a system to avoid robots to join the event!

Hardcoded stamm names

The stamm names should be dynamic.
Aka UserController->addUser() See TODO
Possible solutions:

  • Config-Datei
  • Datenbank
  • Mit Hilfe des LDAP auslesen

But first we have to discuss which solution is the best.

Material request

As a logged in user with the role "ROLE_elder" I want to be able to add a material request
I want to be able to set:

  • name
  • a description
  • the stamm the request is for
  • the material objects (quantity, )
    Automatically the request should have a date of creation and a year the request belongs to.
    (After a special date in the year the request belongs to the next "request year")

I want to be able to set the objects while adding the material request.

I want that only I and a user with the role "ROLE_REMOVE_ALL_MATERIAL_REQUESTS"
is able to remove my object. In addition only I or users of the group "ROLE_EDIT_ALL_MATERIAL_REQUESTS" should be able to edit the request. (symfony ACL)
Also only users with the group "ROLE-elder" should be able to see the material request.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.