Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 48 additions & 5 deletions schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -306,20 +306,63 @@ components:
MemberRegistrationRequest:
type: object
properties:
email:
type: string
format: email
first_name:
type: string
last_name:
type: string
number_of_coop_shares:
is_company:
type: boolean
is_investing:
type: boolean
num_shares:
type: integer
company_name:
type: string
usage_name:
type: string
pronouns:
type: string
birthdate:
type: string
format: date
preferred_language:
$ref: '#/components/schemas/PreferredLanguageEnum'
street:
type: string
city:
type: string
postcode:
type: string
country:
type: string
email:
type: string
format: email
phone:
type: string
other_comments:
type: string
required:
- birthdate
- city
- country
- email
- first_name
- is_company
- is_investing
- last_name
- number_of_coop_shares
- num_shares
- postcode
- preferred_language
- street
PreferredLanguageEnum:
enum:
- de
- en
type: string
description: |-
* `de` - 🇩🇪 Deutsch
* `en` - 🇬🇧 English
ShareOwnerForWelcomeDesk:
type: object
properties:
Expand Down
1 change: 1 addition & 0 deletions src/api-client/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ models/Column.ts
models/DatapointExport.ts
models/Dataset.ts
models/MemberRegistrationRequest.ts
models/PreferredLanguageEnum.ts
models/ShareOwnerForWelcomeDesk.ts
models/index.ts
runtime.ts
144 changes: 133 additions & 11 deletions src/api-client/models/MemberRegistrationRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@
*/

import { mapValues } from '../runtime';
import type { PreferredLanguageEnum } from './PreferredLanguageEnum';
import {
PreferredLanguageEnumFromJSON,
PreferredLanguageEnumFromJSONTyped,
PreferredLanguageEnumToJSON,
PreferredLanguageEnumToJSONTyped,
} from './PreferredLanguageEnum';

/**
*
* @export
Expand All @@ -24,35 +32,123 @@ export interface MemberRegistrationRequest {
* @type {string}
* @memberof MemberRegistrationRequest
*/
email: string;
firstName: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
firstName: string;
lastName: string;
/**
*
* @type {string}
* @type {boolean}
* @memberof MemberRegistrationRequest
*/
lastName: string;
isCompany: boolean;
/**
*
* @type {boolean}
* @memberof MemberRegistrationRequest
*/
isInvesting: boolean;
/**
*
* @type {number}
* @memberof MemberRegistrationRequest
*/
numberOfCoopShares: number;
numShares: number;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
companyName?: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
usageName?: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
pronouns?: string;
/**
*
* @type {Date}
* @memberof MemberRegistrationRequest
*/
birthdate: Date;
/**
*
* @type {PreferredLanguageEnum}
* @memberof MemberRegistrationRequest
*/
preferredLanguage: PreferredLanguageEnum;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
street: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
city: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
postcode: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
country: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
email: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
phone?: string;
/**
*
* @type {string}
* @memberof MemberRegistrationRequest
*/
otherComments?: string;
}



/**
* Check if a given object implements the MemberRegistrationRequest interface.
*/
export function instanceOfMemberRegistrationRequest(value: object): value is MemberRegistrationRequest {
if (!('email' in value) || value['email'] === undefined) return false;
if (!('firstName' in value) || value['firstName'] === undefined) return false;
if (!('lastName' in value) || value['lastName'] === undefined) return false;
if (!('numberOfCoopShares' in value) || value['numberOfCoopShares'] === undefined) return false;
if (!('isCompany' in value) || value['isCompany'] === undefined) return false;
if (!('isInvesting' in value) || value['isInvesting'] === undefined) return false;
if (!('numShares' in value) || value['numShares'] === undefined) return false;
if (!('birthdate' in value) || value['birthdate'] === undefined) return false;
if (!('preferredLanguage' in value) || value['preferredLanguage'] === undefined) return false;
if (!('street' in value) || value['street'] === undefined) return false;
if (!('city' in value) || value['city'] === undefined) return false;
if (!('postcode' in value) || value['postcode'] === undefined) return false;
if (!('country' in value) || value['country'] === undefined) return false;
if (!('email' in value) || value['email'] === undefined) return false;
return true;
}

Expand All @@ -66,10 +162,23 @@ export function MemberRegistrationRequestFromJSONTyped(json: any, ignoreDiscrimi
}
return {

'email': json['email'],
'firstName': json['first_name'],
'lastName': json['last_name'],
'numberOfCoopShares': json['number_of_coop_shares'],
'isCompany': json['is_company'],
'isInvesting': json['is_investing'],
'numShares': json['num_shares'],
'companyName': json['company_name'] == null ? undefined : json['company_name'],
'usageName': json['usage_name'] == null ? undefined : json['usage_name'],
'pronouns': json['pronouns'] == null ? undefined : json['pronouns'],
'birthdate': (new Date(json['birthdate'])),
'preferredLanguage': PreferredLanguageEnumFromJSON(json['preferred_language']),
'street': json['street'],
'city': json['city'],
'postcode': json['postcode'],
'country': json['country'],
'email': json['email'],
'phone': json['phone'] == null ? undefined : json['phone'],
'otherComments': json['other_comments'] == null ? undefined : json['other_comments'],
};
}

Expand All @@ -84,10 +193,23 @@ export function MemberRegistrationRequestFromJSONTyped(json: any, ignoreDiscrimi

return {

'email': value['email'],
'first_name': value['firstName'],
'last_name': value['lastName'],
'number_of_coop_shares': value['numberOfCoopShares'],
'is_company': value['isCompany'],
'is_investing': value['isInvesting'],
'num_shares': value['numShares'],
'company_name': value['companyName'],
'usage_name': value['usageName'],
'pronouns': value['pronouns'],
'birthdate': ((value['birthdate']).toISOString().substring(0,10)),
'preferred_language': PreferredLanguageEnumToJSON(value['preferredLanguage']),
'street': value['street'],
'city': value['city'],
'postcode': value['postcode'],
'country': value['country'],
'email': value['email'],
'phone': value['phone'],
'other_comments': value['otherComments'],
};
}

54 changes: 54 additions & 0 deletions src/api-client/models/PreferredLanguageEnum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/* tslint:disable */
/* eslint-disable */
/**
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/


/**
* * `de` - 🇩🇪 Deutsch
* * `en` - 🇬🇧 English
* @export
*/
export const PreferredLanguageEnum = {
De: 'de',
En: 'en'
} as const;
export type PreferredLanguageEnum = typeof PreferredLanguageEnum[keyof typeof PreferredLanguageEnum];


export function instanceOfPreferredLanguageEnum(value: any): boolean {
for (const key in PreferredLanguageEnum) {
if (Object.prototype.hasOwnProperty.call(PreferredLanguageEnum, key)) {
if (PreferredLanguageEnum[key as keyof typeof PreferredLanguageEnum] === value) {
return true;
}
}
}
return false;
}

export function PreferredLanguageEnumFromJSON(json: any): PreferredLanguageEnum {
return PreferredLanguageEnumFromJSONTyped(json, false);
}

export function PreferredLanguageEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): PreferredLanguageEnum {
return json as PreferredLanguageEnum;
}

export function PreferredLanguageEnumToJSON(value?: PreferredLanguageEnum | null): any {
return value as any;
}

export function PreferredLanguageEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): PreferredLanguageEnum {
return value as PreferredLanguageEnum;
}

1 change: 1 addition & 0 deletions src/api-client/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ export * from './Column';
export * from './DatapointExport';
export * from './Dataset';
export * from './MemberRegistrationRequest';
export * from './PreferredLanguageEnum';
export * from './ShareOwnerForWelcomeDesk';
45 changes: 45 additions & 0 deletions src/member_registration/DataProcessingAgreement.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { COOP_NAME, COOP_STREET, COOP_PLACE } from "./constants";
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally we'd get those from the backend, probably with an API call on page load.


export default function DataProcessingAgreement() {
return (
<details className="ms-4 mt-2">
<summary>Datenschutzerklärung</summary>
<p>
Verantwortlich für die Datenverarbeitung ist die {COOP_NAME},{" "}
{COOP_STREET}, {COOP_PLACE}. Erreichbar unter contact@supercoop.de. Der
Name, die Anschrift und das Geburtsdatum werden für die Mitgliederliste
der Genossenschaft benötigt (Art. 6 Absatz 1 c DS-GVO i.V.m. §30 Absatz
2 Satz 1 Nr.1 GenG). Über die Adresse oder die E-Mail-Adresse werden Sie
von der Genossenschaft zu Versammlungen eingeladen (Art. 6 Absatz 1c
DS-GVO i.V.m §46 Absatz 1 Satz 1 GenG i.V.m. §6 Nr.4 GenG) und im Rahmen
der Mitgliedschaft über Angebote der Genossenschaft informiert (Art.6
Absatz 1 b DS-GVO i.V.m. §1 Absatz 1 GenG i.V.m. der Satzung). Die
Genossenschaft hat ein berechtigtes Interesse an einer unkomplizierten
und rechtssicheren Erfüllung ihrer Verbindlichkeiten. Die Bereitstellung
der personenbezogenen Daten ist gesetzlich bzw. durch die Satzung
vorgeschrieben, die Nichtbereitstellung hätte zur Folge, dass die
Mitgliedschaft nicht zustande kommen kann.
</p>
<p>
Die personenbezogenen Daten werden nicht an Dritte weitergeleitet,
soweit nicht im Einzelfall dafür eine Einwilligung erteilt wird. Wir
sind allerdings gesetzlich verpflichtet, in einigen Fällen Dritten die
Einsicht in die personenbezogenen Daten zu gewähren. Das betrifft zum
Beispiel andere Mitglieder, den gesetzlichen Prüfungsverband oder
Behörden, insbesondere das Finanzamt. Die Daten werden unterschiedlich
aufbewahrt: Alle steuerlich relevanten Informationen werden zehn Jahre
aufbewahrt (§147 AO). Die Daten in der Mitgliederliste (Name und
Anschrift nach §30 Absatz 2 Satz 1 Nr. 1 GenG) werden auch nach dem
Ausscheiden nicht gelöscht (§30 Absatz 2 Satz 1 Nr. 3 GenG). Sie haben
das Recht auf Auskunft seitens des Verantwortlichen über die
betreffenden personenbezogenen Daten sowie auf Berichtigung oder
Löschung oder auf Einschränkung der Verarbeitung (soweit dem nicht eine
gesetzliche Regelung entgegensteht). Auch kann eine Datenübertragung
angefordert werden, sollte der Unterzeichnende eine Übertragung seiner
Daten an eine dritte Stelle wünschen. Darüber hinaus haben Sie das Recht
auf Beschwerde bei einer Aufsichtsbehörde (Landesbeauftragte für
Datenschutz).
</p>
</details>
);
}
Loading